Utilizzo di ObjectSet (Entity Framework)

In .NET Framework versione 3.5 SP1, una classe ObjectContext per un modello specifico dispone in genere di un set di proprietà di tipo ObjectQuery che rappresentano query su set di entità specifici. La classe ObjectContext dispone anche di metodi per l'aggiunta, l'eliminazione, la connessione e l'aggiornamento di oggetti. Questi metodi in genere prendono un oggetto e un parametro di stringa che specifica il nome del set di entità. In .NET Framework versione 4 una classe ObjectContext per un modello specifico dispone invece di proprietà di tipo ObjectSet, che rappresentano i set di entità del modello. Il metodo CreateObjectSet e i rispettivi overload creano una nuova istanza di ObjectSet. In .NET Framework versione 4 si consiglia di utilizzare i metodi sull'oggetto ObjectSet per eseguire operazioni di creazione, lettura, eliminazione, connessione e aggiornamento. ObjectSet deriva da ObjectQuery, pertanto funziona anche come un oggetto query.

A partire dalla versione 4 di .NET Framework, è possibile utilizzare i metodi seguenti definiti in ObjectSet anziché gli equivalenti definiti in ObjectContext:

AddObject

Attach

ApplyCurrentValues

ApplyOriginalValues

DeleteObject

Detach

Ad esempio, in .NET Framework versione 4 utilizzare il codice seguente:

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.Products.AddObject(newProduct);

}

In .NET Framework versione 3.5 SP1 utilizzare il codice seguente:

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.AddObject("Products", newProduct);

}

Nell'esempio riportato di seguito viene illustrato come utilizzare un oggetto ObjectContext non tipizzato per creare un'istanza di 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 implementa l'interfaccia IObjectSet. L'interfaccia IObjectSet può risultare utile in scenari di test. Per creare unit test che testano un'applicazione senza eseguire query all'origine dati, è possibile utilizzare oggetti test popolati in memoria con dati di test. È possibile definire un tipo ObjectSet di test che implementa IObjectSet e può archiviare dati di test all'esterno dell'origine dati. È necessario inoltre definire una classe ObjectContext di test che espone le proprietà del tipo IObjectSet di test e che dispone di un metodo che inizializza i set di entità con dati di test.

Per esempi di miglioramenti della testabilità in .NET Framework versione 4, vedere i post di blog seguenti: blog del team di ADO.NET e blog di Julie Lerman.

Vedere anche

Concetti

Utilizzo di oggetti (Entity Framework)