Entity Framework bietet mehrere Ansätze für die Verwaltung des Szenarios „Zeile aktualisieren, falls vorhanden, andernfalls neue Zeile einfügen“.
Angehängte Objekte:
Wenn die zu ändernde Entität bereits an den Kontext angehängt ist, kann dies der Fall sein direkt aktualisiert:
if (context.ObjectStateManager.GetObjectStateEntry(myEntity).State == EntityState.Detached) { context.MyEntities.AddObject(myEntity); } // Attached object tracks modifications automatically context.SaveChanges();
Nicht angehängte Objekte mit bekanntem Schlüssel:
Wenn die Entität einen Schlüssel ungleich Null hat (was auf einen vorhandenen Eintrag hinweist), kann dies der Fall sein wie folgt angehängt und geändert werden:
if (myEntity.Id != 0) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
Nicht angehängte Objekte mit Unbekannt Schlüssel:
In Fällen, in denen der Schlüssel unbekannt ist, kann eine Suchabfrage durchgeführt werden, um die Existenz festzustellen:
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();
Das obige ist der detaillierte Inhalt vonWie implementiert man Upsert-Logik mithilfe des Entity Framework?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!