web-dev-qa-db-fra.com

MapKey vs HasForeignKey Différence - Api Fluent

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);
53
parliament

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:

82
Slauma