必须明确配置此关联的主要结尾

时间:2014-05-27 16:35:15

标签: c# entity-framework code-first ef-migrations

我正在尝试通过代码优先方法创建表。我有两张桌子" CrimeReport"和" ReportDescription"他们有一对一的关系。

[Table("CrimeReport")]
    public class CrimeReport
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Key]
         public  int  ImageId { get; set; }
         public virtual ReportDescription ReportDescription { get; set; }

    }


    [Table("ReportDescription")]
    public class ReportDescription
    {



        [Key]
        public int ImageId { get; set; }
        public virtual CrimeReport CrimeReport { get; set; }

    }

我在编写命令时遇到异常" add-migration try"在包控制台内。

  

无法确定类型之间关联的主要结尾' codefirst.Models.ReportDescription'和' codefirst.Models.CrimeReport'。必须使用关系流畅API或数据注释显式配置此关联的主要结尾。'

1 个答案:

答案 0 :(得分:1)

您需要使用ReportDescription.CrimeReport属性标记[Required]

[Table("ReportDescription")]
public class ReportDescription
{
    [Key]
    public int ImageId { get; set; }

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

}

否则EF无法确定CrimeReportReportDescription必需:必需关系,并将ImageId作为密钥分享。

等效的FluentAPI映射将是:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ReportDescription>()
        .HasRequired(x => x.CrimeReport)
        .WithRequiredDependent(x => x.ReportDescription);
}