sql查询中load和include的区别是什么?
本文关键字:区别 是什么 include 查询 load sql | 更新日期: 2023-09-27 18:16:49
我有一个查询,看起来像这样
var query = db.Customer
.Include(c => c.Address)
.Where(c => c.Address.Id > 10)
.ToList();
当我这样做时
var query = db.Customer
.Where(c => c.Address.Id > 10)
.ToList();
db.Address
.Where(a => a.Id > 10)
.Load();
我得到了相同的结果。
我的问题是:这两个查询返回之间是否有任何差异,并且一个比另一个更受欢迎?
var query = db.Customer
.Include(c => c.Address)
.Where(c => c.Address.Id > 10)
.ToList();
在上面的查询中,所有的相关数据都使用一次数据库访问。
var query = db.Customer
.Where(c => c.Address.Id > 10)
.ToList();
db.Address
.Where(a => a.Id > 10)
.Load();
这里它使用2次数据库访问来获取数据。
Load:
有几种情况,您可能希望从中加载实体将数据库放入上下文中,而无需立即执行任何操作这些实体。这方面的一个很好的例子是为数据加载实体绑定,如本地数据中所述。一种常见的方法是写一个LINQ查询,然后在上面调用ToList,只能立即调用丢弃创建的列表。Load扩展方法的工作原理类似于除了它完全避免了列表的创建。
注意:我们不能说哪个更好。大多数情况下,我们使用急切加载方法(Include
)。这很好也很简单。但有时它很慢。所以你需要根据你的数据大小来决定使用哪一个