实体框架访问集合的集合

时间:2017-05-07 01:52:59

标签: asp.net-mvc asp.net-core asp.net-core-mvc entity-framework-core dbcontext

我正在尝试在我的控制器的“详细信息”操作中访问我的主模型集合的集合。但我不断收到以下错误

  

System.InvalidOperationException:'属性表达式'e => {来自[e]中的颜色.Colors选择[颜色] .Images}'无效。表达式应代表属性访问:'t => t.MyProperty”。有关包含相关数据的详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=746393。'

这会突然显示:

var model = _context.Towers
    .Include(e => e.Colors.Select(color => color.Images))
    .FirstOrDefault(e => e.ID == id);

以下是其他一些代码:

Tower.cs

public class Tower 
{
    [Key]
    public Nullable<int> ID { get; set; }
    public List<Color> Colors { get; set; } = new List<Color>();
}

Color.cs

public class Color 
{
    [Key]
    public Nullable<int> ID { get; set; }
    public string ColorHash { get; set; }
    public List<Image> Images { get; set; } = new List<Image>();
}

Image.cs

public class Image
{
    [Key]
    public Nullable<int> ID { get; set; }
    public string ImagePath { get; set; }
}

我需要能够访问与关联的每个 颜色 相关联的 图像 Tower 我正在显示详细信息。

1 个答案:

答案 0 :(得分:3)

我认为它应该是这样的:

var model = _context.Towers
    .Include(e => e.Colors)
        .ThenInclude(color => color.Images))
    .FirstOrDefault(e => e.ID == id);