2012-12-27 123 views
7

試圖首先與實體框架代碼建立以下關係。下面的代碼不起作用我已經嘗試了很多變化......有沒有人有線索?在實體框架中將外鍵映射到組合鍵

CONSTRAINT [FK_EVENT_Contact] FOREIGN KEY (Patient_ID,[Contact_ID]) REFERENCES 
[PatientContact](Patient_ID,Person_ID) 



public class PatientContact 
{ 
    [Key, Column(Order = 0)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int Person_ID { get; set; } 
    public virtual Person Person { get; set; } 

    [Key, Column(Order = 1)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int Patient_ID { get; set; } 
    public virtual Patient Patient { get; set; } 
} 

public class Event 
{ 
    [Key] 
    public int Event_ID { get; set; } 

    [Required] 
    public int EventType_ID {get;set;} 
    public virtual EventType EventType { get; set; } 

    [ForeignKey("Patient")] 
    public int Patient_ID { get; set; } 
    public virtual Patient Patient { get; set; } 

    [ForeignKey("PatientContact")] 
    public int Contact_ID { get; set; } 
    public virtual PatientContact PatientContact { get; set; } 

} 
+0

歡迎堆棧溢出!你遇到了什麼錯誤?你究竟想要完成什麼? – IronMan84

回答

17

您有2個選項。

使用屬性,你已經例如:

[ForeignKey("PatientContact"), Column(Order = 0)] 
public int Person_ID{ get; set; } 
[ForeignKey("PatientContact"), Column(Order = 1)] 
public int Patient_ID{ get; set; } 
public virtual PatientContact PatientContact { get; set; } 

使用模型構造器(流利API)

modelBuilder.Entity<Event>() 
    .HasRequired(p => p.PatientContact) 
    .WithMany() 
    .HasForeignKey(p => new {p.Person_ID, p.Patient_ID});