gpt4 book ai didi

c# - 在 Entity Framework 中创建多对多联结表

转载 作者:太空狗 更新时间:2023-10-30 01:19:21 25 4
gpt4 key购买 nike

我正在尝试在我的两个实体之间添加多对多关系。我需要一个带有附加字段的联结表,我知道这意味着 EF 无法自动执行此操作,我需要为我的联结表创建一个实体。

我有以下型号

public class Supplier
{
public int Id { get; set;}
public virtual ICollection<SupplierUsers> UserPermissions { get; set; }
}

public class User
{
public string Id { get; set;}
public virtual ICollection<SupplierUsers> UserPermissions { get; set; }
}

我需要用户拥有存储在联结表中的权限。所以我创建了以下实体

public class SupplierUsers
{
public string UserId { get; set; }
public int SupplierId { get; set; }
public SupplierUserPermission Permission { get; set; }
public virtual Supplier Supplier { get; set; }
public virtual User User { get; set; }
}

在我的 OnModelCreating 中,我还添加了以下内容(这可能是我出错的地方)

modelBuilder.Entity<SupplierUsers>()
.HasKey(x => new { x.UserId, x.SupplierId });

这在一定程度上有效,我可以成功地向该表添加用户/供应商/权限。

但是我不能将同一个用户/供应商多次添加到这个表中(可能是因为 PK?)。

如何修改我的代码,以便我可以在此表中多次添加相同的用户或供应商?

目前表结构如下所示:

Current junction table structure

谢谢。

最佳答案

如果我没理解错的话,您想将多对相等的 UserId 和 SupplierId 添加到 SupplierUsers,对吧?

将 SupplierUsersId 字段添加到您的 SupplierUsers 实体并使其成为主键。

public class SupplierUsers
{
public int SupplierUsersId { get;set; }
public string UserId { get; set; }
public int SupplierId { get; set; }
public SupplierUserPermission Permission { get; set; }
public virtual Supplier Supplier { get; set; }
public virtual User User { get; set; }
}

从 OnModelCreating() 中删除配置

关于c# - 在 Entity Framework 中创建多对多联结表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23344528/

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