实体框架-具有主键和复合外键的多对多

本文关键字:框架 复合 实体 -具 | 更新日期: 2023-09-27 18:29:23

在多对多关系中,我有两个实体(Case和Person),在关系表上有一个额外的数据字段(CasePerson with 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表上的两个键?

实体框架-具有主键和复合外键的多对多

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

到PersonId和

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

到CaseId。此唯一索引强制列配对是唯一的。