Quelle est la différence entre:
this.HasRequired(a => a.Something)
.WithMany()
.Map(a => a.MapKey("SomethingId"));
et
this.HasRequired(a => a.Something)
.WithMany()
.HasForeignKey(a => a.SomethingId);
Les deux mappages créeront exactement le même schéma de base de données avec une clé étrangère non nullable SomethingId
et une contrainte référentielle entre les deux tables liées.
Le premier mappage avec MapKey
est utilisé lorsque vous ne souhaitez pas avoir la clé étrangère comme propriété dans votre classe de modèle. Dans ce cas, le type d'association est appelé Association indépendante . Vous appliqueriez le deuxième mappage avec HasForeignKey
lorsque la clé étrangère est une propriété du modèle. Ce type est appelé Association de clés étrangères .
Dans de nombreux scénarios, il est plus facile de travailler avec des associations de clés étrangères, mais beaucoup de gens considèrent qu'il est moins propre d'avoir un artefact relationnel (une clé étrangère) dans le monde des objets et préfèrent donc les associations indépendantes.
Voici quelques références sur les deux types d'associations et leurs avantages et inconvénients: