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