C# 实体框架-表结构、导航多个子体等

C# 实体框架-表结构、导航多个子体等,c#,asp.net-mvc,entity-framework,asp.net-core-1.1,C#,Asp.net Mvc,Entity Framework,Asp.net Core 1.1,因此,我正在重写一个过时的应用程序,并试图以正确的方式构建它。我有一个Category>Product>Part>Options的基本结构,但每个层都有多个层,我不知道如何简化数据结构,并有效地导航子层 我觉得电子商务有点复杂,但我们有很多产品、部分和部分选项 因此,为了好玩,我试着看看我是否可以将顶级类别的所有数据汇总到不同零件选项的样例,看看整个页面是否可以同时显示整个类别/产品线(我知道在生产中不能这样做)。我遇到的直接问题是在我的LINQ查询中包含所有子体,因为由于关系表中的额外列,有

因此,我正在重写一个过时的应用程序,并试图以正确的方式构建它。我有一个Category>Product>Part>Options的基本结构,但每个层都有多个层,我不知道如何简化数据结构,并有效地导航子层

我觉得电子商务有点复杂,但我们有很多产品、部分和部分选项

因此,为了好玩,我试着看看我是否可以将顶级类别的所有数据汇总到不同零件选项的样例,看看整个页面是否可以同时显示整个类别/产品线(我知道在生产中不能这样做)。我遇到的直接问题是在我的LINQ查询中包含所有子体,因为由于关系表中的额外列,有几个子体需要中间对象。这是必要的,我理解,但它很快就会变得混乱,因为这是一个潜在的无限数量的类别/子类别级别的设置。例如:

IQueryable<Category> Categories = Context.CategoryHierarchies
    .Where(w => w.ParentCategoryId == null)
    .Where(w => w.Active == true)
    .OrderBy(o => o.Sort)
    .Select(s => s.Category)
    .Include("ParentCategories")
    .Include("CategoryProducts.Product.ProductParts.Part")
    .Include("SubCategories.Category.CategoryProducts.Product.ProductParts.part")
    .Include("SubCategories.Category.SubCategories.Category.CategoryProducts.Product.ProductParts.part")
一路下来。哎呀。因此,对于我的问题,当我将ViewModels加载到视图中,并且我想要访问类别、产品和可能的零件时,有没有更好的方法来实现这一点?我有一个观点,我可以在每一个层面上进行深入探讨,但它很快就会变得单调乏味。我是否只是将它们作为视图模型中的单独对象加载,并直接访问它们,然后通过单独的查询填充它们?我对这一点很陌生,非常感谢任何人的建议


我确实看到了.NETCore.ThenInclude()的内容,它看起来确实很有用,但我不完全确定它会把事情清理得那么干净。这是一个很大的降序过程。

我认为如果您使用将映射到类的SQL视图,那么它会更干净,但是EF Core实际上不适用于SQL视图。无论如何,我认为你应该在这个网站上移动你的问题=>SQL视图可能会有帮助,或者在实体框架上创建你自己的存储库模式,以隐藏外部世界的包含。我认为如果你使用SQL视图,它将映射到一个类,但EF Core实际上不与SQL视图一起工作,那么它会更干净。无论如何,我认为您应该在这个网站中移动您的问题=>SQL视图可能有助于或在实体框架之上创建您自己的存储库模式,以便对外部世界隐藏包含的内容。
.Include("SubCategories.Category.CategoryProducts.Product.ProductParts.Part.PartMaterials.Swatch")