2014-11-06 118 views
1

我有兩個實體(個案和人)與關係表上的額外數據字段(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表上定義兩個鍵的方法?

+1

[創建複合關鍵實體框架]的可能重複(http://stackoverflow.com/questions/14873169/creating-composite-key-entity-framework) – 2014-11-06 19:53:35

+0

我沒有試圖將複合關鍵字作爲外部關係的關鍵;相反,我試圖保證組合{CaseId,PersonId}對每個CasePerson都是唯一的。我知道我可以將它作爲複合主鍵,但我不想從CasePerson中刪除已存在的主鍵ID。 – user3897692 2014-11-06 20:36:17

+0

我可以通過向CaseId添加'[Index(「IX_CasePerson」,1,IsUnique = true)]'來實現此目的。這個獨特的索引強制列配對是唯一的。 – user3897692 2014-11-07 20:29:24

回答

0

我能夠加入
[Index("IX_CasePerson", 1, IsUnique=true)]

,將personId和

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

到CaseId做到這一點。這個獨特的索引強制列配對是唯一的。