Недавно я обновил свои решения / проекты от .NET Core 1.1 до 2.0, включая EntityFramework Core. Теперь я получаю ошибку, которую я никогда не получал от EF Core 1.1.
«Невозможно определить отношения, представленные навигационным свойством« 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.
В настоящее время работа заключается в явном определении отношений с использованием 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);
});