在Entity Framework中创建多对多的联结表

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

我有以下型号

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

 public class User { public string Id { get; set;} public virtual ICollection 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() .HasKey(x => new { x.UserId, x.SupplierId }); 

这在一定程度上起作用,我可以成功地为此表添加用户/供应商/权限。

我无法多次向该表添加相同的用户/供应商(可能是由于PK?)。

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

这是表结构目前的样子:

当前的联结表结构

谢谢。

如果我理解正确,你想向SupplierUsers添加多对等UserId和SupplierId,对吧?

将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()中删除配置