我有一个看起来像这样的查询
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();
据我所知,我得到的结果相同。
我的问题是:这两个查询返回的内容之间是否存在差异,而另一个查询优先于另一个?
答案 0 :(得分:0)
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次数据库访问来获取数据。
您可能希望从中加载实体 数据库进入上下文而不立即做任何事情 那些实体。一个很好的例子是加载数据实体 如本地数据中所述的绑定。一种常见的方法是 编写一个LINQ查询,然后在其上调用ToList,只是立即调用 丢弃创建的列表。 Load扩展方法就像 ToList除了它完全避免创建列表。
注意:我们不能说哪一个更好。我们大多数时候都使用预先加载方法(Include
)。这很好又简单。但有时它很慢。所以您需要根据数据大小等决定使用哪一个