Si vous n'avez pas de mappage avec l'API Fluent, EF créera un mappage basé sur les conventions. La convention dans ce cas est que List1
et List2
sont les inverses les propriétés de navigation de la même relation - dans ce cas, une relation plusieurs-à-plusieurs "autoréférencement".
L'effet que vous rencontrez est une relation automatique fixup qui est exécutée lorsque DetectChanges()
est appelé (ou SaveChanges()
qui appelle DetectChanges()
interne). Cette correction met automatiquement à jour les propriétés de navigation inversées des entités attachées afin qu'elles soient cohérentes les unes avec les autres. Vous ne pouvez pas empêcher cela et cela ne devrait pas être un problème.
Modifier
Si vous ne voulez pas un mappage entre les deux listes, vous devez spécifier un mappage explicite avec l'API Fluent. Par exemple: Si les deux listes appartiennent à séparer un à-plusieurs, vous devez spécifier:
modelBuilder.Entity<SomeClass>()
.HasMany(s => s.List1)
.WithRequired() // or WithOptional()
.WillCascadeOnDelete(false);
modelBuilder.Entity<SomeClass>()
.HasMany(s => s.List2)
.WithRequired() // or WithOptional()
.WillCascadeOnDelete(false);
Cette cartographie indique que la seconde extrémité de chaque relation ne soit pas exposé dans le modèle (donc WithRequired()
/WithOptional()
sans paramètre) . Similaire vous pouvez spécifier deux relations plusieurs-à-plusieurs avec HasMany(s => s.List1/2).WithMany().Map(...)
.
Il est impossible de dire sans voir le mappage que vous avez créé. S'il vous plaît fournissez-le. –
c'est le code d'abord? –
C'est le code d'abord. J'ai oublié d'ajouter ça. – Fritsie