在实体框架中包含集合集合

时间:2016-11-14 11:26:51

标签: entity-framework linq

我正在使用Entity Framework 4.3

我有3个表,贷方,产品和产品详细信息

贷方有多个产品,而产品有多个ProductDetail行

这是我尝试使用的一大块代码:

    Lender SingleOrDefault(Expression<Func<Lender, bool>> predicate)
    {
        using (var uow = new UnitOfWork(Connections.LoanComparision))
        {
            var r = new Repository<Lender>(uow.Context);

            return r.Find(predicate)
                .Where(x =>
                    x.IsPublished &&
                    x.Products.Any(y => y.IsPublished))
                .Include(x => x.Products.SelectMany(y => y.ProductDetails))
                .SingleOrDefault();
        }
    }

问题出在Include上 - 我试图让Lender =&gt;产品=&gt;产品详情。即使我知道它是正确链接的,我也无法在intellisense中查看该表。我认为SelectMany可能有效,但它给我一个运行时错误。

有关如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

您执行selectmany但是要将list of list展平为list

要包含相关列表,您应该按照开发者用户

中注明的注释进行选择
Include(x => x.Products.Select(y => y.ProductDetails))