2012-12-27 32 views
7

Öncelikle varlık çerçeve koduyla aşağıdaki ilişkiyi kurmaya çalışın. Aşağıdaki kod çalışmaz Birçok varyasyon denedim ... kimsenin bir ipucu var mı?Yabancı anahtar eşleme nesnesinde varlık anahtarına eşleme

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

hoş geldiniz! Ne hatayı alıyorsun? Tam olarak neyi başarmak istiyorsun? – IronMan84

cevap

17

Burada 2 seçeneğiniz var.

kullanılması Eğer örneğin gibi niteliklerini:

[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; } 

Kullanım modelist (akıcı API) yığın taşması için

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