Freigeben über


EntityCollection<TEntity>.Attach Methode

Definition

Definiert eine Beziehung zwischen zwei angefügten Objekten in einem Objektkontext.

Überlädt

Attach(IEnumerable<TEntity>)

Definiert Beziehungen zwischen einem Objekt und einer Auflistung verbundener Objekte in einem Objektkontext.

Attach(TEntity)

Definiert eine Beziehung zwischen zwei angefügten Objekten in einem Objektkontext.

Attach(IEnumerable<TEntity>)

Definiert Beziehungen zwischen einem Objekt und einer Auflistung verbundener Objekte in einem Objektkontext.

public:
 void Attach(System::Collections::Generic::IEnumerable<TEntity> ^ entities);
public void Attach (System.Collections.Generic.IEnumerable<TEntity> entities);
override this.Attach : seq<'Entity (requires 'Entity : null and 'Entity :> System.Data.Objects.DataClasses.IEntityWithRelationships)> -> unit
override this.Attach : seq<'Entity (requires 'Entity : null)> -> unit
Public Sub Attach (entities As IEnumerable(Of TEntity))

Parameter

entities
IEnumerable<TEntity>

Auflistung von Objekten im Objektkontext, die mit dem Quellobjekt verbunden sind.

Ausnahmen

entities-Auflistung ist null.

Das Quellobjekt oder ein Objekt in der entities-Auflistung ist null oder weist nicht den Zustand Unchanged oder Modified auf.

- oder -

Die Beziehung kann nicht anhand der EDM-Metadaten definiert werden. Dies kann auftreten, wenn die Zuordnung im konzeptionellen Schema keine Beziehungen zwischen den beiden Typen unterstützt.

Hinweise

Mit der Attach-Methode werden Beziehungen zwischen einem Objekt und einer Auflistung verbundener Objekte definiert, wenn sowohl das Quellobjekt als auch die Auflistung verbundener Objekte bereits im Objektkontext vorhanden sind. Rufen Sie die Attach-Methode für den ObjectContext auf, um ein Objekt oder Objektdiagramm anzufügen, bei dem die Beziehungen bereits definiert sind. Rufen Sie die Add-Methode für die EntityCollection<TEntity> auf, um ein neues Objekt zu erstellen, das mit dem Quellobjekt verbunden ist. Weitere Informationen finden Sie unter Anfügen und Trennen von Objekten.

Wenn die Auflistung bereits gefüllt oder teilweise gefüllt ist, führt die Attach-Methode vorhandene Entitäten mit den gegebenen Entitäten zusammen. Bei den gegebenen Entitäten wird nicht davon ausgegangen, dass es sich um den vollständigen Satz verknüpfter Entitäten handelt.

Alle übergebenen Entitäten müssen den Status Unchanged oder Modified aufweisen. Objekte im Deleted-Status sind nur zulässig, wenn der Status-Manager die Beziehungsinstanz bereits nachverfolgt.

Gilt für:

Attach(TEntity)

Definiert eine Beziehung zwischen zwei angefügten Objekten in einem Objektkontext.

public:
 void Attach(TEntity entity);
public void Attach (TEntity entity);
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)

Parameter

entity
TEntity

Das anzufügende Objekt.

Ausnahmen

Wenn die entitynull ist.

Wenn die entity nicht mit dem Quellobjekt verknüpft werden kann. Dies kann auftreten, wenn die Zuordnung im konzeptionellen Schema keine Beziehungen zwischen den beiden Typen unterstützt.

- oder -

Wenn eines der Objekte null ist oder nicht den Zustand Unchanged oder Modified aufweist.

Beispiele

Dieses Beispiel beruht auf dem AdventureWorks Sales-Modell. Zum Ausführen des Codes in diesem Beispiel müssen Sie dem Projekt bereits das AdventureWorks Sales-Modell hinzugefügt und das Projekt zur Verwendung des Entity Framework konfiguriert haben. Führen Sie hierzu die Verfahren unter Vorgehensweise: Manuelles Konfigurieren eines Entity Framework-Projekts und Vorgehensweise: Manuelles Definieren der Modell- und Zuordnungsdateien aus.

In diesem Beispiel wird eine Auflistung getrennter SalesOrderDetail-Objekte und ein getrenntes SalesOrderHeader-Objekte einem Objektkontext angefügt. Anschließend werden die Beziehungen zwischen dem SalesOrderHeader-Objekt und den einzelnen SalesOrderDetail-Objekten definiert.

private static void AttachRelatedObjects(
    ObjectContext currentContext,
    SalesOrderHeader detachedOrder,
    List<SalesOrderDetail> detachedItems)
{
    // Attach the root detachedOrder object to the supplied context.
    currentContext.Attach(detachedOrder);

    // Attach each detachedItem to the context, and define each relationship
    // by attaching the attached SalesOrderDetail object to the EntityCollection on
    // the SalesOrderDetail navigation property of the now attached detachedOrder.
    foreach (SalesOrderDetail item in detachedItems)
    {
        currentContext.Attach(item);
        detachedOrder.SalesOrderDetails.Attach(item);
    }
}

Hinweise

Mit der Attach-Methode werden Beziehungen zwischen zwei Objekten definiert, wenn beide Objekte bereits im Objektkontext vorhanden sind. Rufen Sie die Attach-Methode für den ObjectContext auf, um ein Objekt oder Objektdiagramm anzufügen, bei dem die Beziehungen bereits definiert sind. Rufen Sie die Add-Methode für die EntityCollection<TEntity> auf, um ein neues Objekt zu erstellen, das mit dem Quellobjekt verbunden ist. Weitere Informationen finden Sie unter Anfügen und Trennen von Objekten.

Wenn bereits Objekte in die EntityCollection<TEntity> geladen wurden, führt die Attach-Methode die Objekte mit den in der EntityCollection<TEntity> enthaltenen Objekten zusammen.

Bei dem angefügten Objekt wird nicht davon ausgegangen, dass es sich um den vollständigen Satz verbundener Entitätsobjekte handelt.

Das mit dieser EntityCollection<TEntity> verknüpfte Objekt sowie alle Objekte, die daran angefügt werden, müssen den Status Unchanged oder Modified aufweisen.

Objekte im Status Deleted können nur angefügt werden, wenn der ObjectStateManager die Beziehungsinstanz bereits nachverfolgt.

Gilt für: