Gewusst wie: Anfügen verbundener Objekte (Entity Framework)
In diesem Thema wird anhand von Beispielen erläutert, wie verbundene Objekte einem Objektkontext angefügt werden können. Weitere Informationen finden Sie unter Anfügen von Objekten (Entity Framework). Diese Vorgehensweise wird verwendet, wenn ein Objektdiagramm wiederhergestellt wird, das mit XML-Serialisierung serialisiert wurde.
Das Beispiel in diesem Thema beruht auf dem AdventureWorks Sales-Modell. Um den Code in diesem Beispiel auszuführen, müssen Sie dem Projekt bereits das AdventureWorks Sales-Modell hinzugefügt und das Projekt zur Verwendung von Entity Framework konfiguriert haben. Führen Sie dazu die Verfahren unter Gewusst wie: Manuelles Konfigurieren eines Entity Framework-Projekts und Gewusst wie: Manuelles Definieren eines Entity Data Model (Entity Framework) durch.
Beispiel
In diesem Beispiel wird eine Auflistung getrennter SalesOrderDetail-Objekte und ein getrenntes SalesOrderHeader-Objekt einem Objektkontext angefügt. Anschließend werden die Beziehungen zwischen dem SalesOrderHeader-Objekt und den einzelnen SalesOrderDetail-Objekten definiert.
Private Shared Sub AttachRelatedObjects( _
ByVal currentContext As ObjectContext, _
ByVal detachedOrder As SalesOrderHeader, _
ByVal detachedItems As List(Of SalesOrderDetail))
Try
' 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.
For Each item As SalesOrderDetail In detachedItems
currentContext.Attach(item)
detachedOrder.SalesOrderDetail.Attach(item)
Next
Catch ex As InvalidOperationException
Console.WriteLine(ex.ToString())
End Try
End Sub
private static void AttachRelatedObjects(
ObjectContext currentContext,
SalesOrderHeader detachedOrder,
List<SalesOrderDetail> detachedItems)
{
try
{
// 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.SalesOrderDetail.Attach(item);
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.GetType().ToString() + ": " + ex.ToString());
}
}
In diesem Beispiel wird eine Auflistung getrennter SalesOrderDetail-Objekte einem getrennten SalesOrderHeader-Objekt hinzugefügt. Anschließend wird dieses Objektdiagramm dem Objektkontext angefügt.
Private Shared Sub AttachObjectGraph( _
ByVal currentContext As ObjectContext, _
ByVal detachedOrder As SalesOrderHeader, _
ByVal detachedItems As List(Of SalesOrderDetail))
Try
' Define the relationships by adding each SalesOrderDetail
' object in the detachedItems List<SalesOrderDetail> collection to the
' EntityCollection on the SalesOrderDetail navigation property of detachedOrder.
For Each item As SalesOrderDetail In detachedItems
detachedOrder.SalesOrderDetail.Add(item)
Next
' Attach the object graph to the supplied context.
currentContext.Attach(detachedOrder)
Catch ex As InvalidOperationException
Console.WriteLine(ex.ToString())
End Try
End Sub
private static void AttachObjectGraph(
ObjectContext currentContext,
SalesOrderHeader detachedOrder,
List<SalesOrderDetail> detachedItems)
{
try
{
// Define the relationships by adding each SalesOrderDetail
// object in the detachedItems List<SalesOrderDetail> collection to the
// EntityCollection on the SalesOrderDetail navigation property of detachedOrder.
foreach (SalesOrderDetail item in detachedItems)
{
detachedOrder.SalesOrderDetail.Add(item);
}
// Attach the object graph to the supplied context.
currentContext.Attach(detachedOrder);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.GetType().ToString() + ": " + ex.ToString());
}
}
Siehe auch
Konzepte
Serialisieren von Objekten (Entity Framework)
Webdienste und das Entity Data Model (Anwendungsszenarios)
Weitere Ressourcen
Verwalten des Objektkontexts (Entity Framework)
Arbeiten mit Objekten (Entity Framework-Aufgaben)