Trabajar con ObjectSet (Entity Framework)

En la versión 3.5 de .NET Framework SP1, una claseObjectContext para un modelo concreto normalmente tiene un conjunto de propiedades de tipo ObjectQuery que representan las consultas en conjuntos de entidades concretos. ObjectContext también tiene métodos para agregar, eliminar, adjuntar y actualizar objetos. Estos métodos normalmente toman un objeto y un parámetro de cadena que especifica el nombre del conjunto de entidades. En la versión 4 de .NET Framework, una clase ObjectContext de un modelo concreto tiene en cambio propiedades de tipo ObjectSet que representan los conjuntos de entidades del modelo. El método CreateObjectSet y sus sobrecargas crean una nueva instancia de ObjectSet. En la versión 4 de .NET Framework, se recomienda utilizar métodos en el objeto ObjectSet para realizar las operaciones de crear, leer, eliminar, asociar y actualizar. ObjectSet deriva de ObjectQuery, de modo que también funciona como un objeto de consulta.

En las versiones de .NET Framework a partir de la número 4, puede utilizar los siguientes métodos definidos en ObjectSet en lugar de los equivalentes definidos en ObjectContext:

AddObject

Attach

ApplyCurrentValues

ApplyOriginalValues

DeleteObject

Detach

Por ejemplo, en .NET Framework 4, utilice el código siguiente:

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.Products.AddObject(newProduct);

}

En .NET Framework 3.5 SP1, utilice el código siguiente:

using (AdventureWorksEntities context =

new AdventureWorksEntities())

{

// Add the new object to the context.

context.AddObject("Products", newProduct);

}

En el siguiente ejemplo de código se muestra cómo usar un ObjectContext sin tipo para crear una instancia de 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 clase ObjectSet implementa la interfaz IObjectSet. La interfaz IObjectSet puede resultar útil para probar escenarios. Si desea crear pruebas unitarias para comprobar el funcionamiento de una aplicación sin ejecutar consultas en el origen de datos, puede utilizar objetos de prueba que se rellenan en memoria con datos de prueba. Puede definir un tipo ObjectSet de prueba que implemente IObjectSet y puede almacenar los datos de prueba fuera del origen de datos. También debe definir una clase ObjectContext de prueba que exponga las propiedades del tipo IObjectSet de prueba y que contenga un método para inicializar los conjuntos de entidades con datos de prueba.

Para obtener ejemplos de las mejoras de la comprobación en la versión 4 de .NET Framework, vea los siguientes blogs: blog de equipo de ADO.NET y blog de Julie Lerman.

Vea también

Conceptos

Trabajar con objetos (Entity Framework)