Presentación de Entity Framework
Introducción
ADO.NET Entity Framework proporciona un mapeo en forma de capa de abstracción que permite obtener un modelo de objetos basado en una base de datos de referencia. Las bases de datos relacionales y los lenguajes orientados a objetos definen las relaciones de diferentes maneras. Desde la versión 1.0 del Framework .NET es posible utilizar el tipo DataSet, que es muy parecido a la estructura de una base de datos ya que contiene los tipos DataTable, DataColumn, DataRow y DataRelation. Entity Framework aporta un concepto diferente: las entidades se definen independientemente de la estructura de la base de datos. Éstas se mapean con las tablas y las relaciones. El mapeo entre los objetos y la estructura de la base de datos se realiza a través de tres capas: la capa lógica, la capa conceptual y la capa de mapeo. Un objeto de tipo DbContext conserva el estado de las entidades y sus modificaciones para saber cuándo se deben repercutir en la base de datos.
El mapeo
El Entity Framework utiliza varias capas para realizar un mapeo entre las tablas de una base de datos y los objetos. Esto puede empezar a partir de una base de datos y utilizar las herramientas de Visual Studio para crear el mapeo o, como hemos visto en el capítulo Creación del modelo de datos, es posible empezar por las entidades con el diseñador de Visual Studio o la técnica del Code First y, a continuación, administrar la base de datos correspondiente.
1. La capa lógica
La capa lógica se define con el SSDL (Store Schema Definition Language) y describe la estructura de las tablas y de las relaciones de la base de datos.
Abra el archivo SelfMailer.edmx creado anteriormente con un editor XML para analizar su contenido. La etiqueta edmx:StorageModels contiene la capa lógica:
<!-- SSDL contan -->
<edmx:StorageModels>
<Schema Namespacio="SelfMailer.Store" Alias="Self"
Provider="System.Data.SqlClient" ProviderManifestToken="2012"
xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/
EntityStoreSchemaGenerator"
xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
<EntityContainer Name="SelfMailerStoreContainer">
...
</EntityContainer>
<EntityType Name="MailServers">
...
</EntityType>
<EntityType Name="Senders">
...
</EntityType>
<EntityType Name="MailServerSender">
...
</EntityType>
<Association Name="FK_MailServerSender_MailServer">
...
</Association>
<Association Name="FK_MailServerSender_Sender">
...
</Association>
</Schema>
</edmx:StorageModels>
Este código utiliza SSDL para describir tres tablas, MailServers, Senders y MailServerSender. La etiqueta...
Trabajar con las entidades
ADO.NET define tipos que permiten trabajar con las bases de datos: DbConnection, DbCommand y DbParameter, entre otras. Las clases del Entity Framework provienen de estas clases base, principalmente las clases EntityConnection, EntityCommand y EntityParameter.
El primer elemento para comunicar con una base de datos es disponer de una conexión. El objeto EntityConnection recibe una cadena de conexión y gestiona la apertura y el cierre de las conexiones. Durante la creación del modelo de datos, Visual Studio almacena la cadena de conexión en el archivo de configuración de la aplicación App.config:
<connectionStrings>
<add name="SelfMailerContainer"
connectionString="metadata=
res://*/Entities.SelfMailer.csdl|
res://*/Entities.SelfMailer.ssdl|
res://*/Entities.SelfMailer.msl;
provider=System.Data.SqlClient;
provider connection string="
Data Source=.\SQLEXPRESS;initial catalog=SelfMailer;
integrated security=True;
MultipleActiveResultSets=True;
App=EntityFramework"" ...