【问题标题】:Entity Framework - many to many with primary key and composite foreign key实体框架 - 具有主键和复合外键的多对多
【发布时间】: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


【解决方案1】:

我可以通过添加
[Index("IX_CasePerson", 1, IsUnique=true)]

来实现这一点

到 PersonId 和

[Index("IX_CasePerson", 2, IsUnique=true)]

到 CaseId。这个唯一索引强制列对是唯一的。

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多