实体包括嵌套列表时

时间:2018-06-06 15:55:27

标签: c# entity-framework linq system.data

我有以下类结构:

public class TopClass
{
    public int Id { get; set; }

    public List<SecondClass> SecondClass { get; set; }

}


public class SecondClass
{
    public int Id { get; set; }

    public int? third { get; set; }

    [ForeignKey("third")]
    public ThirdClass ThirdClass{ get; set; }
}

public class ThirdClass
{
    //Whatever...
}

我使用实体中的DbSet对象进行查询。

如果我想查询TopClass,并包含第二个类,我会执行以下操作:

var top = context.TopClass.Include(x => x.SecondCass);

如果我想查询第二个类并包含第三个类,我会执行以下操作:

var second = context.SecondClass.Include(x => x.ThirdClass);

到目前为止一切正常

但是,如果我想查询top并包含到第三个,我希望这样做:

var top = context.TopClass.Include(x => x.SecondCass).Include(x => x.SecondClass.ThirdClass);

但是,这不起作用,因为SecondClass变量无法访问ThirdClass变量。所以相反,我必须这样做:

var top = context.TopClass.Include(x => x.SecondCass).Include(x => x.SecondClass.Select(x => x.ThirdClass);

对我来说没有意义 - 为什么我必须这样做?

我知道原因是因为topClass将secondClass声明为一个列表,我认为它无法处理它,因为它太嵌套/

我的问题是,为什么它不能处理我期望的语法,因为第一个孩子是一个列表?

0 个答案:

没有答案