Ric*_*chC 6 lazy-loading linq-to-sql
linq to sql会自动延迟加载关联实体吗?
我认为它会,但我找不到一篇文章陈述它.
Jam*_*ran 12
这取决于你如何定义"懒惰负载".
如果你说
var person = (from p in db.People
where p.PersonId = pid
select p).First();
var spouse = person.Spouse; // based on the SpouseId FK
// back into the People table.
Run Code Online (Sandbox Code Playgroud)
然后,这将是"懒惰加载",因为第二个对象在被引用之前不会从数据库中拉出.但是,这将需要两个数据库查询.
但是,如果你要说,
var family = (from p in db.People
where p.PersonId = pid
select new
{
Name = p.Name,
SpouseName = p.Spouse.Name
}).First();
Run Code Online (Sandbox Code Playgroud)
然后,Linq将自动执行连接并从单个数据库查询中的两个记录中加载信息.
是的,我相信确实如此。它还具有“加载”功能/语义,允许您以霰弹枪方式批量加载多个内容。当您知道您将立即需要相关数据以及主要实体时,这非常有用,例如预先缓存呈现单个网页等所需的所有数据。
| 归档时间: |
|
| 查看次数: |
10971 次 |
| 最近记录: |