Share via


Utilisation d'ObjectSet (Entity Framework)

Dans la version 3.5 SP1 du .NET Framework, une classe ObjectContext pour un modèle spécifique a en général un jeu de propriétés du type ObjectQuery qui représentent des requêtes sur des jeux d'entités spécifiques. La classe ObjectContext a également des méthodes pour l'ajout, la suppression, l'attachement et la mise à jour d'objets. Ces méthodes acceptent habituellement un objet et un paramètre de chaîne qui spécifie le nom du jeu d'entités. Dans la version 4 du .NET Framework, une classe ObjectContext pour un modèle spécifique a, à la place, des propriétés du type ObjectSet qui représentent les jeux d'entités du modèle. La méthode CreateObjectSet et ses surcharges créent une nouvelle instance ObjectSet. Dans la version 4 du .NET Framework, nous vous recommandons d'utiliser des méthodes sur l'objet ObjectSet pour effectuer des opérations de création, de lecture, de suppression, d'attachement et de mise à jour. ObjectSet dérive d'ObjectQuery et fonctionne ainsi également comme un objet de requête.

À partir de la version 4 du .NET Framework, vous pouvez utiliser les méthodes suivantes, définies sur ObjectSet, à la place des méthodes équivalentes définies sur ObjectContext :

AddObject

Attach

ApplyCurrentValues

ApplyOriginalValues

DeleteObject

Detach

Par exemple, dans le .NET Framework 4, utilisez le code suivant :

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.Products.AddObject(newProduct);

}

Dans le .NET Framework 3.5 SP1, utilisez le code suivant :

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.AddObject("Products", newProduct);

}

L'exemple suivant montre comment utiliser un ObjectContext non typé pour créer une instance ObjectSet.

' 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);

La classe ObjectSet implémente l'interface IObjectSet. L'interface IObjectSet peut être utile pour le test de scénarios. Pour créer des tests unitaires qui testent une application sans exécuter des requêtes au niveau de la source de données, vous pouvez utiliser des objets de test qui renseignent la mémoire avec les données de test. Vous pouvez définir un type ObjectSet de test qui implémente IObjectSet et peut stocker les données de test ailleurs que dans la source de données. Vous devez également définir une classe ObjectContext de test qui expose les propriétés du type IObjectSet de test et qui a une méthode qui initialise les jeux d'entités avec les données de test.

Pour obtenir des exemples des améliorations de testabilité dans le .NET Framework version 4, consultez les publications de blog suivantes : blog de l'équipe ADO.NET et Julie Lerman's blog (en anglais).

Voir aussi

Concepts

Utilisation d'objets (Entity Framework)