我有3个表:Product
,Category
和ProductCategory
,其中ProductCategory
是Product
之间多对多关系的连接表}和Category
。以下Linq查询(这是Category
类中的扩展方法)会导致当前ProductCategory
内每个Category
记录的往返。为什么是这样?如何改进?另请注意,这是数据库优先EF。
public IEnumerable<Product> ActiveProducts
{
get
{
return this.ProductCategories.Where(c => !c.Product.IsDeleted && c.Product.IsActive).OrderBy(c => c.SortOrder).Select(c => c.Product);
}
}
答案 0 :(得分:2)
导航属性不是IQueryable
,唉。这就是你得到LINQ-to-Objects查询的原因。
答案 1 :(得分:1)
使用Linq,默认是在可枚举的每次迭代中获取数据。如果要一次获取所有行,请在查询上调用.ToList()。这似乎是更有利的方法。