gpt4 book ai didi

c# - 在 Entity Framework 中进行多对多排序

转载 作者:行者123 更新时间:2023-12-02 05:32:56 25 4
gpt4 key购买 nike

我有三个表:ItemsCategory 和联结表 CategoryItems。 Items 和 Category 是多对多的关系。

CategoryItems 有三列:Category_IdItem_IdPosition

如何使用 Position 通过 Entity Framework 对我的项目进行排序?

我正在使用这个模型构建器:

modelBuilder
.Entity<Category>()
.HasMany(c => c.Items)
.WithMany();

最佳答案

如果您的联结表 (CategoryItems) 在关系每一端的外键上有额外的列(在本例中,),EF 不支持映射多对多关系位置)。您将需要创建另一种类型(例如 CategoryItem)并将您的映射配置为到该类型的两个一对多关系。

在这种情况下,您的 CategoryItem 类型都将具有(例如)CategoryItem 集合,而 CategoryItem 类型将具有 CategoryItem 属性。

因此,要获取按位置排序的类别的项目列表,您可以执行如下操作:

var category = context.Categories.Find(categoryId);
var orderedItems =
category.CategoryItems.OrderBy(ci => ci.Position).Select(ci => ci.Item);

您可能希望选择一个比 CategoryItem 更好的名称,因为虽然这是一个很好的名称来描述一个纯粹为多对多关系建模的联结表,但在您的情况下它实际上本身就是一个实体。

关于c# - 在 Entity Framework 中进行多对多排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130757/

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