Trabajar con datos de entidad
Entity Framework compila metadatos de un modelo conceptual y un modelo de almacenamiento, junto con las asignaciones entre esos modelos, en pares bidireccionales de instrucciones Entity SQL con la denominación vistas de cliente. Estas vistas controlan el procesamiento de consultas y actualizaciones en el motor en tiempo de ejecución. El compilador de asignaciones que genera las vistas se puede invocar en tiempo de diseño o en tiempo de ejecución cuando la primera consulta se ejecuta contra un modelo conceptual.
Entity Framework se basa en proveedores de datos ADO.NET específicos del almacenamiento proporcionando un objeto EntityConnection a un proveedor de datos y un origen de datos subyacentes.
Cuando se ejecuta una consulta, se analiza y se convierte en un árbol de comandos canónico, que es una representación del modelo de objetos de la consulta. Los árboles de comandos canónicos representan comandos SELECT, UPDATE, INSERT y DELETE. La totalidad del procesamiento subsiguiente se realiza en el árbol de comandos, que es el medio de comunicación entre el proveedor de System.Data.EntityClient y el proveedor de datos de .NET Framework subyacente, como System.Data.SqlClient.
El diagrama siguiente muestra la arquitectura de Entity Framework para el acceso a datos:
Consultar objetos
Las Herramientas de Entity Data Model de ADO.NET generan una clase derivada de ObjectContext que representa el contenedor de entidades que se define en el modelo conceptual. La clase ObjectContext admite consultas contra un modelo conceptual que devuelve entidades como objetos, así como la creación, actualización y eliminación de objetos entidad. Entity Framework admite consultas de objeto contra un modelo conceptual. Las consultas se pueden crear utilizando métodos del generador de consultas de objeto, Language-Integrated Query (LINQ) y Entity SQL .
En un modelo conceptual, las entidades se relacionan entre sí mediante asociaciones. En la capa de objeto, estas asociaciones están representadas por propiedades que exponen colecciones de objetos relacionados de acuerdo con una referencia de entidad. Por ejemplo, en el modelo School, Department.Course obtiene una colección de entidad de objetos Course basada en la asociación entre Course y Department. Si la propiedad LazyLoadingEnabled de la clase ObjectContext tiene el valor false, los objetos a los que se hace referencia no se cargan automáticamente, y se debe llamar al método Load de la referencia de entidad para cargar los datos de los objetos relacionados en el contexto de los objetos.
Nota: |
---|
Si utilizó el diseñador Entity Data Model Designer para generar el código del nivel de objetos, la propiedad LazyLoadingEnabled de la clase ObjectContext se establece en true de forma predeterminada. |
También puede especificar la ruta de una consulta que defina qué objetos relacionados se han de cargar con los objetos devueltos. Para obtener más información, vea Consultar un modelo conceptual (Entity Framework).
En el ejemplo siguiente del tutorial rápido se muestra una consulta que, cuando se ejecuta, recupera todos los objetos Department. Una definición de la ruta de una consulta garantiza que también se devuelvan los objetos Course relacionados con los objetos Department. Una cláusula ORDER BY de Entity SQL ordena los objetos devueltos por Name.
' Define a query that returns all Department objects
' and related Course objects, ordered by name.
Dim departmentQuery As ObjectQuery(Of Department) = _
From d In schoolContext.Departments.Include("Courses") _
Order By d.Name _
Select d
// Define a query that returns all Department
// objects and course objects, ordered by name.
var departmentQuery = from d in schoolContext.Departments.Include("Courses")
orderby d.Name
select d;
Para obtener más información, vea Consultar un modelo conceptual (Entity Framework).
Puede definir un conjunto de modelos que utilice procedimientos almacenados para ejecutar consultas en el origen de datos. Los conjuntos de resultados de estos procedimientos almacenados se asignan a entidades en el modelo conceptual. Para obtener más información, vea How to: Import a Stored Procedure.
Trabajar con objetos
Un objeto en un contexto del objeto es una representación de tipo de entidad de datos en el origen de datos. Puede modificar, crear y eliminar objetos en un contexto del objeto. El contexto del objeto administra las identidades y relaciones entre objetos. También puede serializar objetos y enlazarlos a controles. Para obtener más información, vea Trabajar con objetos (Entity Framework).
En el ejemplo siguiente del tutorial rápido se obtiene una colección de objetos Course relacionados con un objeto Department y se enlaza la colección a un control DataGridView.
' Get the object for the selected department.
Dim department As Department = _
CType(Me.departmentList.SelectedItem, Department)
' Bind the grid view to the collection of Course objects
' that are related to the selected Department object.
courseGridView.DataSource = department.Courses
//Get the object for the selected department.
Department department = (Department)this.departmentList.SelectedItem;
//Bind the grid view to the collection of Course objects
// that are related to the selected Department object.
courseGridView.DataSource = department.Courses;
Entity Framework realiza el seguimiento de los cambios en los datos de entidad y permite conservar los cambios en el origen de datos. En el ejemplo siguiente del tutorial rápido, los cambios en el contexto del objeto se escriben en la base de datos.
' Save object changes to the database,
' display a message, and refresh the form.
schoolContext.SaveChanges()
Para obtener más información, vea Crear, agregar, modificar y eliminar objetos (Entity Framework).
Puede definir un modelo conceptual que utilice procedimientos almacenados para insertar, actualizar y eliminar datos en el origen de datos. Estos procedimientos almacenados se asignan a entidades en el modelo conceptual. Para obtener más información, vea Walkthrough: Mapping an Entity to Stored Procedures.
Vea también
Conceptos
Trabajar con objetos (Entity Framework)
Consultas en LINQ to Entities