Je viens de mettre à jour ma / mes solution (s) de .NET Core 1.1 à 2.0, y compris EntityFramework Core. Je reçois maintenant une erreur que je n'ai jamais eue avec EF Core 1.1.
"Impossible de déterminer la relation représentée par la propriété de navigation 'InsurancePolicy.Person' de type 'Personne'."
La définition de classe / entité est ci-dessous.
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; }
}
Si je supprime la propriété Person / PersonId, j'obtiens juste la même erreur, mais sur une entité / propriété différente. Quelque chose d'autre se passe ou la façon dont cela est fait dans EF 2.0 a changé. Cela fonctionnait bien avec EF 1.1 et j'ai pu exécuter ma migration et déployer la base de données. Après la mise à niveau vers la version 2.0, je ne peux plus appeler de mon DbContext sans obtenir l'erreur ci-dessus.
Il s'agit d'un problème connu dans EF 2.0.
La solution pour l'instant consiste à définir explicitement la relation à l'aide de l'API Fluent.
Par exemple (à partir du lien fourni):
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);
});