【问题标题】:EF Linq include nested arraysEF Linq 包含嵌套数组
【发布时间】:2017-09-10 17:47:26
【问题描述】:

我在 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();

Result 我有 UsersFlats,但 Flats 没有他们的 房子

我做错了什么?

【问题讨论】:

  • 您目前有 House in Flat、Flat in House、Flat in User 和 User in Flat。这真的很令人困惑。这可能导致循环依赖。不知道你想在这里实现什么

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


【解决方案1】:

你只需要添加一个包含,最深的一个:

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

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

不包括其他平面集合。对于那些你需要一个额外的包含。

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多