Comment se débarrasser "Un objet d'entité ne peut pas être référencé par plusieurs instances de IEntityChangeTracker"?

entity-framework

Question

J'ai un modèle dans Ado.Net EF. J'ai une relation un à plusieurs et quand je veux ajouter les entités, je reçois l'erreur

"Un objet d'entité ne peut pas être référencé par plusieurs instances de IEntityChangeTracker"

Un indice?

Quelque chose de semblable à

Template template = new Template();
...
...
while (from < to)
{
    Course course = new Course();
    .....
    template.Course.Add(course);
    .....
}
courseEntities.AddToTemplate(template); // Problem line
courseEntities.SaveChanges();

Réponse acceptée

Je recevais ce message jusqu'à ce que je commence à stocker le contexte de données dans la propriété HttpContext.Items . Cela signifie que vous pouvez utiliser le même contexte de données pour la demande Web en cours. De cette façon, vous ne vous retrouverez pas avec 2 contextes de données référençant les mêmes entités.

Voici un bon article sur DataContext Life Management .

J'espère que ça aide.

Dave


Réponse populaire

"template", ou quelque chose qu'il référence, a déjà été ajouté à courseEntities ou à un autre contexte. Je ne vois rien dans le code que vous montriez qu'il ferait cela, mais c'est en train de se produire. Cela se produit peut-être dans certains des codes que vous avez supprimés. Examinez la propriété EntityState de "modèle" dans le débogueur et examinez également EntityState des propriétés de "modèle". Cela devrait vous aider à déterminer quelle instance d'entité est déjà dans un contexte.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow