必须显式配置此关联的主体端
本文关键字:关联 主体 配置 | 更新日期: 2023-09-27 18:05:37
我试图通过代码优先的方法创建表。我有两个表"CrimeReport"answers"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或数据注释显式配置。
您需要用[Required]
属性标记ReportDescription.CrimeReport
:
[Table("ReportDescription")]
public class ReportDescription
{
[Key]
public int ImageId { get; set; }
[Required]
public virtual CrimeReport CrimeReport { get; set; }
}
否则EF无法判断CrimeReport
和ReportDescription
是required:required关系,共享ImageId
作为key。
等价的FluentAPI映射将是:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ReportDescription>()
.HasRequired(x => x.CrimeReport)
.WithRequiredDependent(x => x.ReportDescription);
}