【问题标题】:Entity Framework 1:0..1 relation in mvc 5mvc 5 中的实体框架 1:0..1 关系
【发布时间】:2014-03-24 19:23:15
【问题描述】:

我想在我的两个模型之间创建一个 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 的关系。有没有人知道一个好的解决方案?

【问题讨论】:

    标签: c# entity-framework ef-code-first asp.net-mvc-5


    【解决方案1】:

    只有当两个表共享相同的主键时,实体框架中的 1 对 1 或 1 对 0 或 1 关系才有可能。

    例如,您的 MedicalExamination 可能是关系中的主要实体。它有一个 Id 列主键。您的 ExamDictionary 表需要有一个 Id 列作为其主要列。

    然后您使用 Fluent API 描述这种关系,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多