EF Linq包含嵌套数组

时间:2017-09-10 17:47:27

标签: c# entity-framework linq ef-code-first

我在EF-Code-First

中有3个班级
public class User {
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual ICollection<Flat> Flats { get; set; }
}

public class Flat {
    public string Id { get; set; }
    public string Number { get; set; }
    public virtual House House { get; set; }
    public virtual ICollection<User> Users { get; set; }
}

public class House {
    public string Id { get; set; }
    public string Street { get; set; }
    public string Number { get; set; }
    public virtual ICollection<Flat> Flats { get; set; }
}

我希望得到所有用户。

我做:

var Result = _storage.Users
    .Include(x => x.Flats)
    .Include(y => y.Flats.Select(z => z.House))
    .ToList();

结果用户 Flats ,但 Flats 没有房屋

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您只需添加一个包含,即最深层次的包含:

var Result = _storage.Users
.Include(user => user.Flats.Select(flat => flat.Houses))
.ToList();

这将自动包括所有Houses属性以及所有Flat属性和Houses属性

其他Flat Flat不包含在内。对于那些你需要额外包括。