Ho recentemente aggiornato la mia soluzione / i progetti da .NET Core 1.1 a 2.0, incluso EntityFramework Core. Ora ricevo un errore che non ho mai ricevuto da EF Core 1.1.
"Impossibile determinare la relazione rappresentata dalla proprietà di navigazione" InsurancePolicy.Person "di tipo" Persona "."
La definizione di classe / entità è riportata di seguito.
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; }
}
Se rimuovo la proprietà Person / PersonId, ottengo lo stesso errore ma su un'altra entità / proprietà. Qualcos'altro sta succedendo o il modo in cui questo è stato fatto in EF 2.0 è cambiato. Questo ha funzionato bene con EF 1.1 e sono stato in grado di eseguire la mia migrazione e distribuire il database. Dopo l'aggiornamento alla 2.0, non posso effettuare alcuna chiamata al mio DbContext senza ottenere l'errore sopra riportato.
Questo è un problema noto all'interno di EF 2.0.
Il lavoro attorno al momento è definire esplicitamente la relazione utilizzando l'API Fluent.
Ad esempio (dal link fornito):
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);
});