我正在尝试在我的两个实体之间添加多对多关系。我需要一个带有附加字段的联结表,我知道这意味着 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?)。
如何修改我的代码,以便我可以在此表中多次添加相同的用户或供应商?
目前表结构如下所示:
谢谢。
最佳答案
如果我没理解错的话,您想将多对相等的 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/