Verhindern von Entitätsreferenzkonflikten in Entity Framework 4.1
Entity Framework löst möglicherweise die Ausnahme „Ein Entitätsobjekt kann nicht von mehreren Instanzen von IEntityChangeTracker referenziert werden“ aus. Dies geschieht, wenn verschiedene Kontexte versuchen, dieselbe Entität gleichzeitig zu verwalten. Dies tritt häufig auf, wenn eine Entität mit zugehörigen Objekten gespeichert wird, die aus separaten Kontexten geladen werden.
Das Problem:
Stellen Sie sich separate Dienste wie EmployeeService
und CityService
vor, die jeweils ihren eigenen Entity Framework-Kontext erstellen. Wenn CityService
eine Stadt lädt und EmployeeService
später dieselbe Stadt einem Mitarbeiter hinzufügt, entsteht ein Konflikt, da die Stadt von zwei verschiedenen Kontexten verfolgt wird.
Die Lösung:
Der Schlüssel liegt in der Verwendung eines einzigen, gemeinsamen Kontexts. Fügen Sie diesen Kontext in beide Dienste ein:
<code class="language-csharp">var context = new YourDbContext(); // Create the context once EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context); // Both services use the same context</code>
Eine elegantere Lösung könnte darin bestehen, zusammengehörige Entitäten in einem einzigen Dienst zu konsolidieren. Erstellen Sie beispielsweise anstelle von EmployeeService
und CityService
ein EmployeeCityService
. Dies vereinfacht die Kontextverwaltung und verhindert Konflikte.
Das obige ist der detaillierte Inhalt vonWie kann ich die Ausnahme „Ein Entitätsobjekt kann nicht von mehreren Instanzen von IEntityChangeTracker referenziert werden' in Entity Framework 4.1 verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!