我最近刚刚将我的解决方案/项目从.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。
答案 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);
});