【发布时间】:2014-04-29 01:50:24
【问题描述】:
我正在尝试在我的两个实体之间添加多对多关系。我需要一个带有附加字段的联结表,我知道这意味着 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 的原因?)。
如何更改我的代码,以便可以在此表中多次添加同一个用户或供应商?
目前的表结构如下所示:
谢谢。
【问题讨论】:
标签: c# sql entity-framework