如何包含循环? 我想指定要包含在查询中的相关对象。
我有下一个功能
public IQueryable<TEntity> Include(Expression<Func<TEntity, object>>[] includes)
{
IQueryable<TEntity> result = null;
//two includes are ok:
//IQueryable<TEntity> result2 = null;
//if (includes.Count() > 1)
//{
//result2 = dbset.Include(includes[0]).Include(includes[1]);
//}
//include in loop is not ok:
foreach (var exp in includes)
{
result = dbset.Include(exp);
}
return result;
}
如果我取消注释注释代码,result2就可以了。但结果还不错。
奇怪的是,如果我逐步调试循环,在每次迭代检查结果中,结果都可以。但是,如果我没有逐步检查结果,包括上次表达的工作。
你知道为什么这不起作用以及如何解决?
编辑: 这是修复:
result = dbset;
foreach (var exp in includes)
{
result = result.Include(exp);
}
答案 0 :(得分:4)
问题在于,您在result
上通过单Include()
次调用的结果来覆盖dbSet
的值。
您需要连接这些调用,如下所示:
foreach (var exp in includes)
{
result = result.Include(exp);
}