EF核心2.0无法确定关系
问题描述:
我刚刚将我的解决方案/项目从.NET Core 1.1升级到2.0,包括EntityFramework Core。我现在正在从EF Core 1.1中得到一个我从未得到的错误。EF核心2.0无法确定关系
“无法确定由'Person'类型的导航属性'InsurancePolicy.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而没有得到上述错误。
答
这是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);
});
你能告诉关系的其他部分,即'Person'类和相关的流利配置。 –
这是一个众所周知的但在EF 2.0中。他们正在跟踪https://github.com/aspnet/EntityFrameworkCore/issues/9180。 –
哇,我以为EF核心2.0是**稳定**和**推荐**(至少这是文档说的) –