Heim >Backend-Entwicklung >C++ >Entity Framework 4: Wann sollte „AttachObject' vs. „AddObject' verwendet werden?

Entity Framework 4: Wann sollte „AttachObject' vs. „AddObject' verwendet werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-10 14:02:42427Durchsuche

Entity Framework 4: When to Use `AttachObject` vs. `AddObject`?

Entity Framework 4: Beherrschen von AddObject und Attach

Eine effektive Nutzung des Entity Framework hängt vom Verständnis der unterschiedlichen Rollen von ObjectSet.AddObject und ObjectSet.Attach ab. Während AddObject neue Entitäten einfügt, verwaltet Attach bestehende. Die Situationen, die Attach erfordern, können jedoch nuanciert sein.

Ein wichtiger Anwendungsfall für Attach betrifft vom Kontext losgelöste Entitäten. Dies geschieht häufig nach dem Abrufen einer Entität und dem anschließenden Schließen des Kontexts. Um diese Entität erneut zur Änderung zu aktivieren, verwenden Sie Attach:

<code class="language-csharp">var existingPerson = new Person { Name = "Joe Bloggs" };
ctx.Persons.Attach(existingPerson);
existingPerson.Name = "Joe Briggs";
ctx.SaveChanges();</code>

Dadurch wird eine UPDATE-Anweisung generiert, wodurch ein redundanter Datenbankabruf vermieden wird.

Eine weitere wertvolle Anwendung von Attach ist die Verbindung bestehender, kontextbezogener Entitäten, denen automatische Beziehungen fehlen. Betrachten Sie eine Person-Entität mit einer Addresses-Navigationseigenschaft (eine Sammlung von Address-Entitäten). Wenn Sie sowohl Person- als auch Address-Objekte geladen haben, ihre Beziehung jedoch nicht hergestellt ist, bietet Attach die Lösung:

<code class="language-csharp">var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name == "Joe Bloggs");
var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID);
existingPerson.Addresses.Attach(myAddress);
ctx.SaveChanges();</code>

Hier Attach wird die Beziehung aktualisiert, ohne die Entitäten selbst zu ändern.

Das obige ist der detaillierte Inhalt vonEntity Framework 4: Wann sollte „AttachObject' vs. „AddObject' verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn