2009-07-24 6 views
2

Ich versuche, eine Entität mit einer verknüpften Entität an einen neuen Kontext anzuhängen, wenn ich die Entität aktualisieren möchte.Anfügen einer Entität mit einer verknüpften Entität an einen neuen Entitätsframeworkkontext

Ich habe eine Personentabelle (Generalized to Personal), die ein LanguageID Feld hat. Dieses Feld ist über die EF als FK mit einer anderen Tabellensprache mit LanguageID als Primärschlüssel (1-M) verknüpft. Ich muss eine bestimmte Personensprachpräferenz aktualisieren, die Beziehung scheint jedoch mit dem alten Kontext verknüpft zu bleiben, da in der unten markierten Zeile ein Fehler "Objekt kann nicht von mehreren IEntityChangeTracker-Instanzen referenziert werden" angezeigt wird. Gibt es eine Möglichkeit, die Spracheinheit an den neuen Kontext als eine Beziehung der Entität Person (Person) anzuhängen?

Die Einheiten wurden in den ursprünglichen GetPersonnel() -Methode nicht gelöst, die eine .INCLUDE() -Methode verwendet die preferredlanguage

preferredlanguage ist der Navigation Name auf der Person Tisch zurückzukehren ...

public static void UpdateUser(Personnel originalUser, Personnel newUser) 
    { 
     using (AdminModel TheModel = new AdminModel()) 
     { 

      ((IEntityWithChangeTracker)originalUser).SetChangeTracker(null); 
      ((IEntityWithChangeTracker)originalUser.PreferredLanguage).SetChangeTracker(null); 

      TheModel.Attach(originalUser);--Error Line 
      TheModel.ApplyPropertyChanges("Person", newUser); 

      TheModel.SaveChanges(); 
     } 
    } 

Danke Sean

Antwort

1

Um diese Art von Problemen zu vermeiden, sollten Sie GetPersonnel() machen eine NoTracking Abfrage machen.

I.e.

ctx.Person.MergeOption = MergeOption.NoTracking; 
// and then query as per normal. 

diese Weise können Sie eine grafische Darstellung der angeschlossenen Einheiten erhalten können (vorausgesetzt, Sie verwenden .Include()), die nicht angebracht ist. Beachten Sie, dass dies nicht funktioniert, wenn Sie versuchen, Entitäten manuell zu lösen, da dies Ihr Diagramm schreddert.

this helps

Alex

Verwandte Themen