gpt4 book ai didi

c# - Entity Framework 简单报表

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:58 24 4
gpt4 key购买 nike

我将如何使用 Entity Framework 编写查询,在其中我需要制作一个包含产品、类别和父类别列的列表。我还没有弄清楚如何获得父类别。任何帮助表示赞赏。到目前为止,我有以下内容:

from product in Products
select new { Ctg = (from prdCategory in ProductCategories
where prdCategory.Products.Contains(product)
select prdCategory.CategoryName).FirstOrDefault(),
Name = product.ProductName
ParentCtg = ...
}

最佳答案

好的,如果您的数据库中的所有关联都已正确设置,那么这将是一个简单的查询:

var product = from p in context.Products
select new {
Name = product.ProductName,
CategoryNames = p.ProductCategories
.Select(c => c.CategoryName).ToList(),
ParentCategories = p.ProductCategories
.Select(c => c.ProductCategory2.CategoryName).ToList()
};

当 EF 映射自引用关联时,它会创建两个名为 ProductCategory1 的相关导航属性和 ProductCategory2 .这些名称都不是特别有用,这些导航属性之一是指父类别或关系的 0..1 端。另一个是指 child 或关系的*方。
要了解哪个是哪个,右击ProductCategory1,在属性窗口中,ProductCategory1的重数是*(很多),所以ProductCategory1代表子类别或子类别的导航属性(也是 EntityCollection<ProductCategory> 类型)和另一个 - ProductCategory2 - 表示该类别的父类别,它的类型是 ProductCategory .对于您的询问,我们对此感兴趣。
此外 - 为了使您的查询更具可读性 - 您可以将 ProductCategory1 重命名为 Subcategories 并将 ProductCategory2 重命名为 ParentCategory

关于c# - Entity Framework 简单报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4010261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com