Arbeiten mit ObjectSet (Entity Framework)

In .NET Framework, Version 3.5 SP1, verfügt eineObjectContext-Klasse für ein bestimmtes Modell in der Regel über einen Satz von Eigenschaften vom ObjectQuery-Typ, die Abfragen zu bestimmten Entitätssätzen darstellen. ObjectContext verfügt auch über Methoden zum Hinzufügen, Löschen, Anfügen und Aktualisieren von Objekten. Diese Methoden akzeptieren normalerweise einen Objekt- und einen Zeichenfolgenparameter, der den Entitätssatznamen angibt. In .NET Framework Version 4 verfügt eineObjectContext-Klasse für ein bestimmtes Modell stattdessen über Eigenschaften vom ObjectSet-Typ, die die Entitätssätze des Modells darstellen. Die CreateObjectSet-Methode und ihre Überladungen erstellen eine neue ObjectSet-Instanz. In .NET Framework Version 4 empfiehlt es sich, Methoden auf das ObjectSet-Objekt anzuwenden, um Erstellungs-, Lese-, Lösch-, Anfüge- und Aktualisierungsvorgänge vorzunehmen. ObjectSet leitet sich von ObjectQuery ab, weshalb es als Abfrageobjekt funktioniert.

Ab .NET Framework, Version 4, können Sie die folgenden für ObjectSet definierten statt den entsprechenden Methoden verwenden, die für ObjectContext definiert sind:

AddObject

Attach

ApplyCurrentValues

ApplyOriginalValues

DeleteObject

Detach

Verwenden Sie beispielsweise in .NET Framework 4 den folgenden Code:

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.Products.AddObject(newProduct);

}

Verwenden Sie in .NET Framework 3.5 SP1 den folgenden Code:

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.AddObject("Products", newProduct);

}

Im folgenden Codebeispiel wird gezeigt, wie mit einem nicht typisierten ObjectContext eine ObjectSet-Instanz erstellt wird.

' Create the ObjectContext. 
Dim context As New ObjectContext("name=AdventureWorksEntities")

Dim query As ObjectSet(Of Product) = context.CreateObjectSet(Of Product)()

' Iterate through the collection of Products. 
For Each result As Product In query
    Console.WriteLine("Product Name: {0}", result.Name)
Next
// Create the ObjectContext.
ObjectContext context =
    new ObjectContext("name=AdventureWorksEntities");

ObjectSet<Product> query = context.CreateObjectSet<Product>();

// Iterate through the collection of Products.
foreach (Product result in query)
    Console.WriteLine("Product Name: {0}", result.Name);

Die ObjectSet-Klasse implementiert die IObjectSet-Schnittstelle. Die IObjectSet-Schnittstelle ist möglicherweise in Testszenarien nützlich. Komponententests, die eine Anwendung überprüfen, ohne Abfragen in der Datenquelle auszuführen, können Sie mithilfe von Testobjekten erstellen, die den Arbeitsspeicher mit Testdaten füllen. Sie können für den Test einen ObjectSet-Typ definieren, der IObjectSet implementiert und Testdaten außerhalb der Datenquelle speichern kann. Sie müssen außerdem eine ObjectContext-Testklasse definieren, die die Eigenschaften des IObjectSet-Testtyps verfügbar macht und über eine Methode verfügt, die die Entitätenmengen mit Testdaten initialisiert.

Beispiele für die Prüfbarkeitsverbesserungen in .NET Framework Version 4 finden Sie in den folgenden Blogbeiträgen: ADO.NET-Teamblog und Julie Lermans Blog.

Siehe auch

Konzepte

Arbeiten mit Objekten (Entity Framework)