2014-03-24 99 views
0

我想創造我的兩個模型之間的關係是1:0..1但我得到的是1 .. *關係:實體框架1:在MVC 0..1關係5

public class MedicalExamination 
{ 
    public int Id { get; set; } 

    public DateTime EntryDate { get; set; } 

    public DateTime ExecutionDate { get; set; } 

    public DateTime AcceptanceDate { get; set; } 

    public string Description { get; set; } 

    public string State { get; set; } 

    public string Result { get; set; } 

    public string Comment { get; set; } 

    public virtual Visit Visit { get; set; } 

    [Required] 
    public virtual ExaminationDictionary ExaminationDictionary { get; set; } 

} 

,我的第二個模型:

public class ExaminationDictionary 
{ 
    [Key] 
    public string Code { get; set; } 

    public string Name { get; set; } 

    public string Description { get; set; } 

    public decimal Price { get; set; } 


    public virtual MedicalExamination MedicalExamination { get; set; } 

} 

後,我跑了它和更新我得到了數據庫這樣的關係:http://scr.hu/11m6/4eny0 的事情是,我想它是0..1:1間的關係。有人知道這個好的解決方案嗎?

回答

1

實體框架中的1對1或1對0或1的關係只有在兩個表共享相同主鍵時纔有可能。

因此,例如,您的醫學檢查大概是關係中的主要實體。它有一個Id列主鍵。您的ExamDictionary表需要有一個Id列,它是主要的。

然後,使用流利的API,像這樣描述這種關係:

modelBuilder.Entity<MedicalExamination>() 
    .HasOptional(m=>m.ExaminationDictionary) 
    .WithRequiredPrincipal(d=>d.MedicalExamination);