EF Core 2.0无法确定关系

时间:2017-08-17 15:16:00

标签: entity-framework-core

我最近刚刚将我的解决方案/项目从.NET Core 1.1升级到2.0,包括EntityFramework Core。我现在收到一个我从未从EF Core 1.1获得的错误。

"无法确定导航属性&Insurance;保险政策。类型' Person'。"

类/实体定义如下。

public class InsurancePolicy
{
    [Key]
    public Guid Id { get; set; }

    [ForeignKey( "InsuranceCompanyId" )]
    public InsuranceCompany InsuranceCompany { get; set; }
    [Required]
    public int InsuranceCompanyId { get; set; }

    [ForeignKey( "PersonId" )]
    public Person Person { get; set; }
    [Required]
    public Guid PersonId { get; set; }

    [ForeignKey( "PolicyHolderId" )]
    public Person PolicyHolder { get; set; }
    [Required]
    public Guid PolicyHolderId { get; set; }

    public string GroupId { get; set; }
    public string MemberId { get; set; }
}

如果我删除了Person / PersonId属性,我只是在不同的实体/属性上得到相同的错误。还有其他事情正在发生,或者在EF 2.0中这样做的方式发生了变化。这适用于EF 1.1,我能够运行迁移并部署数据库。升级到2.0后,如果没有出现上述错误,我无法调用我的DbContext。

1 个答案:

答案 0 :(得分:4)

这是EF 2.0中已知的issue

目前的解决方法是使用Fluent API明确定义关系。

例如(来自提供的链接):

modelBuilder.Entity<Relation>(e =>
    {
       e.HasOne(r => r.AccountManager).WithMany(u => u.AccountManagerRelations).HasForeignKey(r => r.AccountManagerId);
       e.HasOne(r => r.SalesManager).WithMany(u => u.SalesManagerRelations).HasForeignKey(r => r.SalesManagerId);
    });