如何使用Entity Framework Core加载所有级别

时间:2016-11-01 11:54:37

标签: entity-framework entity-framework-core

我的域名模式是:

图书

public class Book
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int ReleaseYear { get; set; }

    public virtual ICollection<Store> Stores { get; set; }
}

商品

public class Store
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int BookId { get; set; }

    public virtual Book Book { get; set; }
    public virtual ICollection<StoreLocation> Locations { get; set; }
}

StoreLocation

public class StoreLocation
{
    public int Id { get; set; }
    public string Address { get; set; }
    public int StoreId { get; set; }

    public virtual Store Store { get; set; }
}

如何包含Book的所有级别(和子级别)?

public Book GetBookById(int Id)
{
    return this._DbContext.Books
        .Include(p => p.Stores)
        .FirstOrDefault(p => p.Id == Id);
}

我尝试了什么?

  • .ThenInclude(p => p.StoreLocation)不起作用。

1 个答案:

答案 0 :(得分:1)

您必须按照以下所示进行操作。

  return this._DbContext.Books.Include(p => p.Stores).ThenInclude(q => q.Locations)
                    .FirstOrDefault(p => p.Id == Id);

注意:有时VS没有正确显示智能。所以要注意intellisense:D。一个解决方案可能就是关闭VS并重新启动它的新实例。如果它没有工作,只需键入你想要的东西,而不依赖于智力。之后它编译并正常工作。