假设我有一个简单的类
public class foo
{
public List<int> A {get;set;}
public List<int> B {get; set;}
}
如果我跑
using(var ctx = new MyFooContext())
{
var joins = ctx.foo.Include(x => x.A).Include(x => x.B).ToList();
var includes = new List<Expression<Func<foo, object>>> {x => x.A, x => x.B);
var noJoinQuey = ctx.foo.AsQueryable();
includes.Each(i => noJoinrQuery.Include(i));
var noJoins = noJoinQuery.ToList();
}
第一个joins
将使用join语句生成查询,并在一个光荣的语句中运行。第二个noJoins
执行一大堆单独的select语句。为什么呢?!
答案 0 :(得分:0)
因此,.Include
是返回对象的函数之一,因此您可以像query.Include().Include()
一样链接它们,但是在循环中,它似乎不会这样做。如果我将其更改为
foreach(var p in includes)
{
query = query.Include(p);
}
它有效。