我想在我的两个模型之间创建一个关系为1:0..1,但我得到的只是1 .. *关系:
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的关系。有人知道一个很好的解决方案吗?
答案 0 :(得分:1)
只有当两个表共享相同的主键时,才能实现Entity Framework中的1对1或1对0关系。
因此,例如,您的MedicalExamination可能是该关系中的主要实体。它有一个Id列主键。您的ExaminationDictionary表需要有一个Id列,它是主要的。
然后使用Fluent API描述关系:
modelBuilder.Entity<MedicalExamination>()
.HasOptional(m=>m.ExaminationDictionary)
.WithRequiredPrincipal(d=>d.MedicalExamination);