281 votes

Entity Framework Code First - deux clés étrangères de la même table

J’ai juste commencé à l’aide de code EF tout d’abord, je suis débutant dans cette rubrique.

J’ai voulu créer des relations entre les équipes et les matchs : 1 match = 2 équipes (accueil, commentaires) et le résultat. J’ai pensé qu’il est facile de créer ces modèles, alors j’ai commencé à coder :

Et j’obtiens une exception : `` . Comment puis-je créer ce modèle, avec 2 clés étrangères à la même table ? TIA.

318voto

Ladislav Mrnka Points 218632

Essayez ceci :

Les clés primaires sont mappés par convention par défaut. L’équipe doit avoir deux collection d’allumettes. Vous ne pouvez pas collection unique référencée par deux Match FKs. est mappé sans suppression en cascade car il ne fonctionne pas dans ces gites référencement-à-plusieurs.

63voto

ShaneA Points 378

Il est également possible de spécifier le `` attribut sur la propriété de navigation :

De cette façon, vous n’avez pas besoin d’ajouter n’importe quel code pour la `` méthode

17voto

Maico Points 48

Vous pouvez aussi essayer ça :

Lorsque vous faites une colonne FK autorise les valeurs NULL, vous violez le cycle. Ou nous sommes juste tricher le générateur de schéma EF.

Dans mon cas, cette simple modification résout le problème.

14voto

juls Points 31

C’est parce que la Cascade supprime sont activées par défaut. Le problème est que lorsque vous appelez une suppression sur l’entité, il va supprimer chacune des entités référencées touche f ainsi. Vous devriez faire pas « obligatoire » valeurs nullable pour résoudre ce problème. Une meilleure option serait de lever convention de delete Cascade de EF Code First :

Il est probablement plus sûr indiquer explicitement quand faire un delete cascade pour chacun des enfants lorsque le mappage/config. l’entité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X