自引用实体框架错误

时间:2018-05-12 14:57:32

标签: c# entity-framework .net-core

我有一个字段Organization.RemappedOrganization,它映射到数据库中的Organization.Recno。当我尝试使用Organization对象时,出现错误:

  

InvalidOperationException:无法为属性调用Property' RemappedOrganization'实体类型'组织'因为它被配置为导航属性。属性只能用于配置标量属性。

我猜测我没有在实体框架中正确设置...但不确定如何。

public class Organization
{
    [Key]
    public int? Recno { get; set; }
    public string OrganizationName { get; set; }
    public bool PermanentlyDisplay { get; set; }
    [ForeignKey("RemappedOrganization")]
    public virtual Organization RemappedOrganization { get; set; }
    public DateTime? DateAdded { get; set; }
}

modelBuilder.Entity<Organization>().ToTable("Organization")
            .HasIndex(p => new { p.OrganizationName }).IsUnique();

1 个答案:

答案 0 :(得分:0)

您收到错误,因为未正确配置以下属性:

[ForeignKey("RemappedOrganization")]

您正在使用ForeignKey属性装饰导航属性,并指定与属性值相同的属性。

您有两种方法可以解决错误:

  • 删除该属性并让EF为您生成外键列
  • 在您的实体中添加新属性RemappedOrganizationId(必须是标量属性),并将该属性名称用作ForeignKey的值。