Heim >Backend-Entwicklung >C++ >Wie aktualisiere oder füge ich Zeilen effizient in Entity Framework ein?

Wie aktualisiere oder füge ich Zeilen effizient in Entity Framework ein?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-06 18:28:45936Durchsuche

How to Efficiently Update or Insert Rows in Entity Framework?

Zeile aktualisieren, falls vorhanden, andernfalls Logik mit Entity Framework einfügen

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!

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