Fehlerbehebung bei Entity-Objekt-Referenzkonflikten in Entity Framework 4.1
Das Speichern einer Employee
-Entität, die mit einer City
-Entität in Entity Framework 4.1 verknüpft ist, kann manchmal die Ausnahme auslösen: „Ein Entitätsobjekt kann nicht von mehreren Instanzen von IEntityChangeTracker referenziert werden.“ Dies geschieht normalerweise beim Hinzufügen verwandter Entitäten.
Das Problem liegt darin, wie die Klassen EmployeeService
und CityService
ihre Kontexte verwalten. Die Zeile payrollDAO.AddToEmployee(e1);
in EmployeeService
ist der Übeltäter. Hier wird e1
(die Employee
-Entität) zu einem Kontext hinzugefügt, der bereits einen Verweis auf city1
(die verknüpfte City
-Entität) enthält. Dies führt zu einem Konflikt, da eine Entität nicht gleichzeitig an mehrere Kontexte angehängt werden kann.
Die Lösung besteht darin, sicherzustellen, dass beide Dienste denselben Kontext haben. Dies kann auf zwei Arten erfolgen:
1. Abhängigkeitsinjektion: Den Kontext in die Dienstkonstruktoren einfügen:
<code class="language-csharp">EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context);</code>
Dadurch wird sichergestellt, dass beide Dienste im selben Kontext ausgeführt werden, wodurch Konflikte vermieden werden.
2. Konsolidierter Dienst: Erstellen Sie einen einzelnen Dienst, zum Beispiel EmployeeCityService
, um sowohl Employee
- als auch City
-Entitäten zu verwalten. Dieser einzelne Dienst würde einen einzigen Kontext verwenden, wodurch die Möglichkeit von Kontextkonflikten ausgeschlossen wäre. Dieser Ansatz fördert eine bessere Datenintegrität und vereinfacht die Kontextverwaltung.
Das obige ist der detaillierte Inhalt vonWie löst man „Ein Entitätsobjekt kann nicht von mehreren Instanzen von IEntityChangeTracker referenziert werden' in Entity Framework 4.1?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!