Ich habe gerade meine Lösung / Projekte von .NET Core 1.1 auf 2.0 aktualisiert, einschließlich EntityFramework Core. Ich bekomme jetzt einen Fehler, den ich nie von EF Core 1.1 bekommen habe.
"Die Beziehung, die durch die Navigationseigenschaft 'InsurancePolicy.Person' vom Typ 'Person' dargestellt wird, konnte nicht ermittelt werden."
Die Definition der Klasse / Entität ist unten.
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; }
}
Wenn ich die Person / PersonId-Eigenschaft entferne, erhalte ich nur den gleichen Fehler, aber auf einer anderen Entität / Eigenschaft. Es läuft noch etwas anderes oder die Art und Weise, wie dies in EF 2.0 geschieht. Dies funktionierte gut mit EF 1.1 und ich konnte meine Migration ausführen und die Datenbank bereitstellen. Nach dem Upgrade auf 2.0 kann ich meinen DbContext nicht aufrufen, ohne den obigen Fehler zu erhalten.
Dies ist ein bekanntes Problem in EF 2.0.
Die Arbeit für jetzt ist, die Beziehung explizit zu definieren, die das Fluent API verwendet.
Zum Beispiel (von dem angegebenen Link):
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);
});