【发布时间】:2014-11-08 04:33:49
【问题描述】:
我有两个实体(Case 和 Person)处于多对多关系中,关系表上有一个额外的数据字段(CasePerson 和 PersonType)。
public class Case {
public int Id;
public List<CasePerson> CasePeople;
}
public class Person {
public int Id;
public List<CasePerson> CasePeople;
}
public class CasePerson {
public int Id;
public int CaseId;
public int PersonId;
public string Type;
public Person Person;
public Case Case;
}
我想在关系表上创建一个复合键,以便一个人与一个案例的配对是唯一的。我还想在 CasePerson 表上维护一个单独的主键,以便通过我的 Web API 控制器进行操作。 EF 或 Fluent API 中是否有办法在此 CasePerson 表上定义这两个键?
【问题讨论】:
-
我不想将复合键作为关系的外键包含在内;相反,我试图保证 {CaseId, PersonId} 的组合对于每个 CasePerson 都是唯一的。我知道我可以将其设为复合主键,但我不想从 CasePerson 中删除已经存在的主键 ID。
-
我可以通过将
[Index("IX_CasePerson", 1, IsUnique=true)]添加到 PersonId 并将[Index("IX_CasePerson", 2, IsUnique=true)]添加到 CaseId 来完成此操作。这个唯一索引强制列对是唯一的。
标签: c# entity-framework many-to-many