[英]How to chain multiple DbSet.Include() in a loop?
如何包含在循环中? 我想指定要包含在查询中的相关对象。
我有下一个功能
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);
}
问题在于,您将使用dbSet
上的单个Include()
调用的结果来不断覆盖result
的值。
您需要按如下方式串联这些调用:
foreach (var exp in includes)
{
result = result.Include(exp);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.