繁体   English   中英

如何在循环中链接多个DbSet.Include()?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM