Heim >Backend-Entwicklung >C++ >Wie aktualisiere oder füge ich Zeilen effizient in Entity Framework ein?
Bei der Arbeit mit Entity Framework gibt es effiziente Möglichkeiten, die Logik zum Aktualisieren einer Zeile, falls vorhanden, zu implementieren existiert oder fügt eine neue Zeile ein.
Angehängte Objekte
Beim Umgang mit Verwenden Sie für ein angehängtes Objekt (ein aus der aktuellen Kontextinstanz geladenes Objekt) den folgenden Ansatz:
if (context.ObjectStateManager.GetObjectStateEntry(myEntity).State == EntityState.Detached) { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
Das Objekt verfolgt automatisch Änderungen und der SaveChanges()-Aufruf führt den Aktualisierungs- oder Einfügevorgang nach Bedarf durch .
Nicht angehängte Objekte mit Schlüsselprüfung
Wenn der Schlüsselwert des Objekts verfügbar ist, können Sie dies verwenden Code:
if (myEntity.Id != 0) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
Dieser Ansatz prüft zunächst anhand seiner Id-Eigenschaft, ob das Objekt existiert. Wenn dies der Fall ist, hängt es es an den Kontext an und markiert es als geändert. Andernfalls wird ein neues Objekt hinzugefügt.
Nicht angehängte Objekte ohne Schlüsselprüfung
Wenn die Existenz des Objekts nicht anhand seines Schlüssels bestimmt werden kann, verwenden Sie eine Suchabfrage :
var id = myEntity.Id; if (context.MyEntities.Any(e => e.Id == id)) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
Dieser Ansatz ruft die Zeile, die zum Schlüssel des Objekts passt, aus der Datenbank ab und führt die Anfügung oder Hinzufügung basierend auf dem Ergebnis durch Abfrage.
Das obige ist der detaillierte Inhalt vonWie aktualisiere oder füge ich Zeilen effizient in Entity Framework ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!