EF Core - Fluent API多对多自我引用

时间:2018-03-28 21:07:46

标签: ef-fluent-api ef-core-2.0

我正在尝试流利地配置2个类。

public class Company 
{
    [Key]
    public int Id {get; set; }
    public string Name { get; set; }
    public List<CompanyOwnership> OwnedBy { get; set; }
}

public class CompanyOwnership 
{
    public static void Configure(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<CompanyOwnership>()
            .HasOne(cpo => cpo.OwnedCompany)
            .WithMany(cp => cp.OwnedBy)
            .HasForeignKey(cpo => cpo.OwnedCompanyId);    
        modelBuilder.Entity<CompanyOwnership>()
            .HasOne(cpo => cpo.OwningCompany)
            .WithMany()
            .HasForeignKey(cpo => cpo.OwningCompanyId);
    }

    [Key]
    public int Id {get; set; }
    public int OwnedCompanyId { get; set; }
    public Company OwnedCompany { get; set; }
    public int OwningCompanyId { get; set; }
    public Company OwningCompany { get; set; }
    public decimal Percentage { get; set; }
}

上述代码将导致错误:

  

InvalidOperationException:无法确定关系       由导航属性'Company.OwnedBy'表示的类型       '列表与LT; CompanyOwnership&GT;'。手动配置关系,       或使用'[NotMapped]'属性或使用忽略此属性       'OnModelCreating'中的'EntityTypeBuilder.Ignore'。

我可以获得一些有关上述设置不足的原因吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

Nvm,

原来我忘了打电话给Configure(...)。

现在工作正常。