Share via


Anfügen von Objekten (Entity Framework)

Beim Ausführen einer Abfrage innerhalb eines Objektkontexts im Entity Framework werden die zurückgegebenen Objekte automatisch an den Objektkontext angefügt. Es können auch Objekte an einen Objektkontext angefügt werden, die nicht von einer Abfrage stammen. Sie können Objekte anfügen, die zuvor getrennt, von einer NoTracking-Abfrage zurückgegeben oder außerhalb des Objektkontexts abgerufen wurden. Sie haben außerdem die Möglichkeit Objekte anzufügen, die im Ansichtsstatus einer ASP.NET-Anwendung gespeichert oder vom Aufruf einer Remotemethode oder einem Webdienst zurückgegeben wurden.

Verwenden Sie eine der folgenden Methoden, um das Objekt an einen Objektkontext anzufügen:

  • Rufen Sie AddObject für den ObjectContext auf, um das Objekt dem Objektkontext hinzuzufügen. Dies ist notwendig, wenn das Objekt neu und noch nicht in der Datenquelle vorhanden ist.

  • Rufen Sie Attach für den ObjectContext auf, um das Objekt an den Objektkontext anzufügen. Dies ist notwendig, wenn das Objekt bereits in der Datenquelle vorhanden ist, jedoch derzeit nicht an den Kontext angefügt ist. Weitere Informationen finden Sie unter Gewusst wie: Anfügen verbundener Objekte (Entity Framework).

  • Rufen Sie AttachTo auf ObjectContext auf, um das Objekt an eine bestimmte Entitätenmenge im Objektkontext anzufügen. Dies ist ebenfalls notwendig, wenn das Objekt über einen null (Nothing in Visual Basic) EntityKey-Wert verfügt.

  • Rufen Sie ApplyPropertyChanges für den ObjectContext auf. Dies ist notwendig, wenn das Objekt bereits in der Datenquelle vorhanden ist und Aktualisierungen an den Eigenschaften des getrennten Objekts vorgenommen wurden, die übernommen werden sollen. Wenn Sie das Objekt lediglich anfügen, gehen Eigenschaftsänderungen verloren. Weitere Informationen finden Sie unter Gewusst wie: Übernehmen von an einem getrennten Objekt vorgenommenen Änderungen (Entity Framework).

Folgendes gilt beim Anfügen von Objekten an den Objektkontext:

  • Wenn das anzufügende Objekt über verbundene Objekte verfügt, werden auch diese Objekte an den Objektkontext angefügt.

  • Damit Attach zum Anfügen eines Objekts verwendet werden kann, muss das Objekt IEntityWithKey implementieren und über einen gültigen Schlüssel verfügen.

  • Objekte werden im Unchanged-Status an den Objektkontext angefügt.

  • Wenn das angefügte Objekt nicht in der Datenquelle vorhanden ist, wird es beim Ausführen von SaveChanges nicht hinzugefügt. In diesem Fall tritt eine Ausnahme auf dem Server auf, wenn Eigenschaften geändert wurden und SaveChanges ausgeführt wird. Verwenden Sie AddObject anstelle von Attach, um ein Objekt hinzuzufügen.

  • Wenn das anzufügende Objekt mit anderen Objekten verbunden ist, müssen die Beziehungen auf eine der folgenden Arten explizit definiert werden:

    • Fügen Sie beide Objekte an den Objektkontext an, und rufen Sie anschließend Attach für EntityCollection oder EntityReference auf, um die Beziehung zu definieren.

    • Wenn keines der Objekte angefügt wird, rufen Sie Add für EntityCollection auf, und geben Sie das verbundene Objekt an, oder legen Sie die Value-Eigenschaft von EntityReference auf das verbundene Objekt fest. Fügen Sie anschließend den Stamm des Objektdiagramms an den Objektkontext an. Sie können diese Methode verwenden, um ein Objektdiagramm aus getrennten Objekten zu erstellen und dann das Diagramm an den Objektkontext anzufügen.

    Diese Methoden werden beim Anfügen verbundener Objekte verwendet, die mit XML-Serialisierung serialisiert wurden. Weitere Informationen finden Sie unter Gewusst wie: Anfügen verbundener Objekte (Entity Framework).

  • Wenn das anzufügende Objekt über aktualisierte Eigenschaftswerte verfügt, verwenden Sie ApplyPropertyChanges, um die Aktualisierungen für das vorhandene Objekt zu übernehmen. Weitere Informationen finden Sie unter Gewusst wie: Übernehmen von an einem getrennten Objekt vorgenommenen Änderungen (Entity Framework).

  • Das Objekt, das an die Attach-Methode übergeben wird, muss über einen gültigen EntityKey-Wert verfügen. Verwenden Sie die AttachTo-Methode zum Angeben des Namens der Entitätenmenge, wenn das Objekt über keinen gültigen EntityKey-Wert verfügt.

  • Eine InvalidOperationException tritt auf, wenn ein anzufügendes Objekt über denselben EntityKey verfügt wie ein anderes Objekt, das bereits im Objektkontext vorhanden ist. Dieser Fehler tritt nicht auf, wenn sich die gleiche Objektinstanz bereits im Objektkontext befindet. Attach kann mehrfach für dieselbe Objektinstanz aufgerufen werden, wenn das Objekt den Status Unchanged hat.

  • Verwenden Sie die AttachTo-Methode, um Objekte an eine bestimmte Entitätenmenge anzufügen. Weitere Informationen finden Sie unter Hinzufügen, Ändern und Löschen von Objekten (Entity Framework).

  • Wenn der Entitätsschlüssel für das Objekt, das mit der AttachTo-Methode angefügt werden soll, bereits definiert ist, tritt eine InvalidOperationException auf, wenn der Wert des entitySetName-Parameters nicht mit dem Namen der Entitätenmenge im vorhandenen Schlüssel übereinstimmt.

Siehe auch

Konzepte

Trennen von Objekten (Entity Framework)
Webdienste und das Entity Data Model (Anwendungsszenarios)

Weitere Ressourcen

Verwalten des Objektkontexts (Entity Framework)