Utilisation du code D'abord, j'ai créé un modèle représentant un Donor
. J'ai utilisé une migration pour générer une table pour stocker tous les objets Donor
. J'ai utilisé des annotations pour spécifier la clé primaire pour être un composite de deux propriétés de mon modèle, Name
et TeamId
.Entity Framework Code Première utilisation de clé étrangère dans le cadre de la clé primaire composite
J'ai ajouté une propriété de navigation au modèle appelé HourlySnapshots
qui est un ICollection<HourlySnapshot>
représentant une relation un-à-plusieurs. (HourlySnapshot
est un autre modèle de domaine que j'ai créé.) J'ai exécuté la migration et généré une autre table pour stocker tous les objets HourlySnapshot
. Comme prévu, il a ajouté deux colonnes qui n'étaient pas dans mon modèle pour stocker la clé étrangère composée de Name
et TeamId
.
Pour initialiser la table HourlySnapshots, j'inclus une propriété Id
classique dans l'objet HourlySnapshot
à utiliser comme clé primaire. Ce que j'essaie de faire est de passer la clé primaire de la table HourlySnapshots de la colonne Id
à un composite de la clé étrangère (qui est un composite de Name
et TeamId
) et une autre propriété de HourlySnapshot
appelée Timestamp
. En d'autres termes, en faire un composite de trois colonnes Name
, TeamId
, et Timestamp
. Pouvez-vous imaginer un moyen de le faire avec Code First? Je peux facilement le faire en ouvrant la définition et l'édition de la table, mais je voudrais adhérer au flux de travail Code First, de sorte que les migrations incluent tous les changements.
Si vous incluez votre code de modèle, il est plus facile pour les gens de vous aider. Deuxièmement, les [clefs de substitution] (https://en.wikipedia.org/wiki/Surrogate_key) rendent cela beaucoup plus facile. Mais si vous voulez des clés naturelles, vous pouvez spécifier des clés composites dans EF via [annotations] (https://msdn.microsoft.com/fr-fr/library/jj591583 (v = vs.113) .aspx) ou [couramment] (https://msdn.microsoft.com/en-us/library/jj591617(v=vs.113).aspx). –