Vous êtes sur la page 1sur 9

Introduccin (Entity Framework)

ADO.NET Entity Framework admite aplicaciones y servicios centrados en datos, y


proporciona una plataforma para la programacin con datos que eleva el nivel de
abstraccin del nivel lgico relacional al nivel conceptual. Al permitir a los programadores
trabajar con datos en un nivel de abstraccin superior, Entity Framework admite cdigo que
es independiente de cualquier motor de almacenamiento de datos o esquema relacional
determinados. Para obtener ms informacin, vea Informacin general de Entity
Framework.
Entity Framework admite Entity Data Model (EDM) para definir datos en el nivel
conceptual. Cuando se usa ADO.NET Entity Data Model Designer, la informacin sobre la
asignacin, el modelo conceptual y el de almacenamiento se almacena en un archivo .edmx.
Entity Framework tambin permite a los desarrolladores programar directamente con los
tipos de datos definidos en el nivel conceptual como objetos de Common Language
Runtime (CLR). Entity Framework proporciona herramientas para generar un archivo
.edmx y los objetos de CLR relacionados basndose en una base de datos existente. Esto
reduce en gran medida el cdigo de acceso a datos que se sola necesitar para crear
aplicaciones y servicios de datos basados en objetos, y agiliza la creacin de servicios y
aplicaciones de datos orientadas a objetos a partir de una base de datos existente. Las
herramientas tambin permiten compilar en primer lugar un modelo conceptual y, a
continuacin, generar automticamente los objetos de CLR relacionados y una base de
datos auxiliar. Para obtener ms informacin, vea Generate Database Wizard.
Los temas de esta seccin le ayudan a comprender rpidamente el uso de Entity Framework
explicando las tecnologas subyacentes en el contexto del Tutorial rpido. El tutorial rpido
muestra cmo compilar una aplicacin Entity Framework a partir de una base de datos
existente.
En esta seccin
Generar modelos y asignaciones
Describe cmo derivar un modelo conceptual a partir de una base de
datos existente.
Asignar un modelo conceptual a un modelo de almacenamiento
Describe cmo se asigna el modelo conceptual al modelo de
almacenamiento.
Trabajar con datos de entidad

Muestra cmo consultar un modelo conceptual y trabajar con datos de


objeto.
Tutorial rpido (Entity Framework)
Tutorial que muestra cmo crear una aplicacin de Entity Framework .
Vea tambin
Conceptos
Informacin general de Entity Framework
Recursos de Entity Framework

Informacin general de Entity Framework


Entity Framework es un conjunto de tecnologas de ADO.NET que permiten el desarrollo
de aplicaciones de software orientadas a datos. Los arquitectos y programadores de
aplicaciones orientadas a datos se han enfrentado a la necesidad de lograr dos objetivos
muy diferentes. Deben modelar las entidades, las relaciones y la lgica de los problemas
empresariales que resuelven, y tambin deben trabajar con los motores de datos que se usan
para almacenar y recuperar los datos. Los datos pueden abarcar varios sistemas de
almacenamiento, cada uno con sus propios protocolos; incluso las aplicaciones que
funcionan con un nico sistema de almacenamiento deben equilibrar los requisitos del
sistema de almacenamiento con respecto a los requisitos de escribir un cdigo de aplicacin
eficaz y fcil de mantener.
Entity Framework permite a los programadores trabajar con datos en forma de objetos y
propiedades especficos del dominio, por ejemplo, con clientes y direcciones, sin tener que
pensar en las tablas de las bases de datos subyacentes y en las columnas en las que se
almacenan estos datos. Con Entity Framework , los desarrolladores de software pueden
trabajar en un nivel ms alto de abstraccin cuando tratan con datos, y puede crear y
mantener aplicaciones orientadas a datos con menos cdigo que en las aplicaciones
tradicionales. Dado que Entity Framework es un componente de .NET Framework, las
aplicaciones de Entity Framework se pueden ejecutar en cualquier equipo en el que est
instalado .NET Framework a partir de la versin 3.5 SP1.
Las siguientes secciones de este tema proporcionan ms detalles sobre Entity Framework :

Giving Life to Models

Mapping Objects to Data

Accessing and Changing Entity Data

Data Providers

Entity Data Model Tools

Learning More

Dar vida a los modelos


Un enfoque de diseo habitual para crear una aplicacin o un servicio consiste en dividir la
aplicacin o el servicio en tres partes: un modelo de dominio, un modelo lgico y un
modelo fsico. El modelo de dominio define las entidades y relaciones del sistema que se
est modelando. El modelo lgico de una base de datos relacional normaliza las entidades y
relaciones en tablas con restricciones de claves externas. El modelo fsico abarca las
capacidades de un motor de datos determinado especificando los detalles del
almacenamiento en forma de particiones e ndices.
Los administradores de bases de datos refinan el modelo fsico para mejorar el rendimiento,
pero los programadores que escriben el cdigo de la aplicacin principalmente se limitan a
trabajar con el modelo lgico escribiendo consultas SQL y llamando a procedimientos
almacenados. Los modelos de dominio se suelen usar como una herramienta para capturar y
comunicar los requisitos de una aplicacin, con frecuencia como diagramas inertes que se
ven y se explican en las primeras etapas de un proyecto, y a continuacin se abandonan.
Muchos equipos de desarrolladores omiten la creacin de un modelo conceptual y
comienzan especificando las tablas, columnas y claves en una base de datos relacional.
Entity Framework da vida a los modelos conceptuales permitiendo a los programadores
consultar las entidades y relaciones en el modelo de dominio (denominado modelo
conceptual en Entity Framework ) al tiempo que se basan en Entity Framework para
traducir esas operaciones en los comandos especficos del origen de datos. Esto libera a las
aplicaciones de las dependencias codificadas de forma rgida en un origen de datos
determinado. El modelo conceptual, el modelo de almacenamiento y las asignaciones entre
los dos se expresan en esquemas basados en XML y se definen en archivos que tienen
extensiones de nombre correspondientes:

El lenguaje de definicin de esquemas conceptuales (CSDL) define el modelo


conceptual. CSDL es la implementacin de Entity Framework del Entity Data
Model. La extensin de archivo es .csdl.

El lenguaje de definicin de esquemas de almacenamiento (SSDL) define el modelo


de almacenamiento, que tambin se denomina modelo lgico. La extensin de
archivo es .ssdl.

El lenguaje de especificacin de asignaciones (MSL) define las asignaciones entre


los modelos conceptual y de almacenamiento. La extensin de archivo es .msl.

El modelo de almacenamiento y las asignaciones pueden cambiar segn sea necesario sin
requerir cambios en el modelo conceptual, las clases de datos o el cdigo de la aplicacin.
Dado que los modelos de almacenamiento son especficos del proveedor, puede trabajar
con un modelo conceptual coherente a travs de varios orgenes de datos.
Entity Framework utiliza estos modelos y archivos de asignacin para transformar las
operaciones de creacin, lectura, actualizacin y eliminacin de las entidades y relaciones
del modelo conceptual en las operaciones equivalentes en el origen de datos. Entity
Framework incluso permite asignar las entidades del modelo conceptual a los
procedimientos almacenados en el origen de datos. Para obtener ms informacin, vea
Especificaciones CSDL, SSDL y MSL.

Asignar objetos a datos


La programacin orientada a objetos supone un desafo al interactuar con sistemas de
almacenamiento de datos. Aunque la organizacin de clases suele reflejar la organizacin
de las tablas de bases de datos relacionales, el ajuste no es perfecto. Varias tablas
normalizadas suelen corresponder a una sola clase y las relaciones entre las clases se
representan a menudo de forma diferente a las relaciones entre tablas. Por ejemplo, para
representar el cliente de un pedido de ventas, una clase Order podra utilizar una propiedad
que contiene una referencia a una instancia de una clase Customer, mientras que una fila
de la tabla Order en una base de datos contiene una columna de clave externa con un valor
que corresponde a un valor de clave principal en la tabla Customer (o conjunto de
columnas). Una clase Customer podra tener una propiedad denominada Orders que
contuviera una coleccin de instancias de la clase Order, mientras que la tabla Customer
en una base de datos no tiene ninguna columna comparable. Entity Framework proporciona
a los desarrolladores de software la flexibilidad para representar las relaciones de esta
manera, o para modelar ms estrechamente las relaciones tal como se representan en la base
de datos. Para obtener ms informacin, vea Definir y administrar relaciones (Entity
Framework).
Las soluciones existentes han intentado cubrir este hueco, que se suele denominar
"desigualdad de impedancia", asignando nicamente clases y propiedades orientadas a
objetos a las tablas y columnas relacionales. En lugar de seguir este enfoque tradicional,
Entity Framework asigna las tablas relacionales, columnas y restricciones FOREIGN KEY
de los modelos lgicos a las entidades y relaciones de los modelos conceptuales. Esto
permite una mayor flexibilidad al definir los objetos y optimizar el modelo lgico. Las
herramientas de Entity Data Model generan clases de datos extensibles segn el modelo
conceptual. Se trata de clases parciales que se pueden extender con miembros adicionales
que el programador agrega. De forma predeterminada, las clases que se generan para un
modelo conceptual determinado derivan de las clases base que proporcionan servicios para
materializar las entidades como objetos y para realizar un seguimiento de los cambios y
guardarlos. Los desarrolladores pueden utilizar estas clases para trabajar con las entidades y

relaciones como objetos relacionados mediante asociaciones. Los desarrolladores tambin


pueden personalizar las clases que se generan para un modelo conceptual. Para obtener ms
informacin, vea Trabajar con objetos (Entity Framework) y How to: Customize ObjectLayer Code Generation.

Obtener acceso a los datos de entidad y cambiarlos


Como algo ms que otra solucin de asignacin objeto-relacional, Entity Framework trata
fundamentalmente de permitir que las aplicaciones obtengan acceso y cambien los datos
que estn representados como entidades y relaciones en el modelo conceptual. Entity
Framework usa la informacin de los archivos del modelo y de asignacin para traducir las
consultas de objeto con los tipos de entidad que se representan en el modelo conceptual en
consultas especficas del origen de datos. Los resultados de la consulta se materializan en
objetos que Entity Framework administra. Entity Framework proporciona las maneras
siguientes de consultar un modelo conceptual y devolver objetos:

LINQ to Entities . Proporciona compatibilidad con Language-Integrated Query


(LINQ) para consultar los tipos de entidad que se definen en un modelo conceptual.
Para obtener ms informacin, vea LINQ to Entities.

Entity SQL . Un dialecto de SQL, independiente del almacenamiento, que trabaja


directamente con entidades del modelo conceptual y que admite conceptos de Entity
Data Model . Entity SQL se utiliza tanto con consultas de objeto como con
consultas que se ejecutan utilizando el proveedor EntityClient. Para obtener ms
informacin, vea Informacin general de Entity SQL.

Mtodos del generador de consultas Estos mtodos permiten construir consultas de


Entity SQL utilizando mtodos de consulta del estilo de LINQ. Para obtener ms
informacin, vea Mtodos del Generador de consultas (Entity Framework).

El Entity Framework incluye el proveedor de datos de EntityClient. Este proveedor


administra las conexiones, traduce las consultas de entidad en consultas especficas del
origen de datos y devuelve un lector de datos que Entity Framework usa para materializar
los datos de la entidad en los objetos. Cuando no se requiere la materializacin de los
objetos, el proveedor de EntityClient tambin se puede utilizar como un proveedor de datos
ADO.NET estndar habilitando las aplicaciones para ejecutar consultas Entity SQL y usar
el lector de datos de solo lectura devuelto. Para obtener ms informacin, vea Proveedor de
EntityClient para Entity Framework.
El diagrama siguiente muestra la arquitectura de Entity Framework para el acceso a datos:

Las herramientas de Entity Data Model pueden generar una clase derivada de
ObjectContext que representa el contenedor de entidades definido en el modelo conceptual.
Este contexto del objeto proporciona los medios para realizar el seguimiento de los cambios
y administrar las identidades, la simultaneidad y las relaciones. Esta clase tambin expone
un mtodo SaveChanges que escribe las inserciones, actualizaciones y eliminaciones en el
origen de datos. Al igual que las consultas, estas modificaciones son realizadas bien por los
comandos que el sistema genera automticamente o bien por los procedimientos
almacenados que el programador especifica. Para obtener ms informacin, vea Crear,
agregar, modificar y eliminar objetos (Entity Framework).

Proveedores de datos
El proveedor EntityClient extiende el modelo de proveedor de ADO.NET teniendo acceso
a los datos en lo que respecta a las entidades conceptuales y relaciones. Ejecuta consultas
que utilizan Entity SQL . Entity SQL proporciona el lenguaje de consultas subyacente que
permite a EntityClient comunicarse con la base de datos. Para obtener ms informacin,
vea Proveedor de EntityClient para Entity Framework.
Entity Framework incluye un proveedor de datos SqlClient actualizado que admite los
rboles de comandos cannicos. Para obtener ms informacin, vea Proveedor de datos
.NET Framework para SQL Server (SqlClient) para Entity Framework.

Herramientas de Entity Data Model


Junto con el motor de ejecucin de Entity Framework , .NET Framework versin 4 incluye
el Generador de EDM (EdmGen.exe). Esta utilidad de lnea de comandos se conecta a un
origen de datos y genera archivos del modelo y de asignacin basados en una asignacin
unvoca entre las entidades y las tablas. Tambin usa un archivo de modelo conceptual
(.csdl) para generar un archivo de nivel de objeto que contiene clases que representan tipos
de entidad y ObjectContext. Para obtener ms informacin, vea Generador de EDM
(EdmGen.exe).
Visual Studio 2010 incluye una variada compatibilidad con las herramientas que permiten
generar y mantener archivos de modelo y de asignacin en una aplicacin de Visual Studio.
El Entity Data Model Designer permite crear escenarios de asignacin avanzados, por
ejemplo de la herencia de tabla por tipo y de tabla por jerarqua, y entidades de divisin que
se asignan a varias tablas. Para obtener ms informacin, vea ADO.NET Entity Data Model
Designer.

Obtener ms informacin
En los temas siguientes se puede obtener ms informacin sobre Entity Framework :
Introduccin (Entity Framework)
Proporcione informacin sobre cmo ponerse en marcha y empezar a usar
rpidamente Tutorial rpido (Entity Framework), que muestra cmo crear una
aplicacin Entity Framework simple rpidamente.
Tutorial rpido (Entity Framework)
Muestra cmo utilizar las herramientas de Entity Data Model con para crear su
primera aplicacin de Entity Framework rpidamente.
Terminologa de Entity Framework
Define muchos de los trminos incluidos en Entity Data Model y Entity Framework
que se utilizan en la documentacin de Entity Framework .
Recursos de Entity Framework
Proporciona vnculos a temas conceptuales y vnculos a temas externos y recursos
para compilar aplicaciones de Entity Framework .

Que es ADO.NET Entity Framework


Teora bsica:
ADO.NET Entity Framework se ha diseado para admitir servicios y aplicaciones
centradas en datos, y proporciona una plataforma para programacin con datos que eleva el
nivel de abstraccin del nivel lgico relacional al nivel conceptual. Permitiendo a los

programadores trabajar con datos en un nivel de abstraccin superior, Entity Framework


admite cdigo que es independiente de cualquier motor de almacenamiento de datos o
esquema relacional determinados.
A continuacin veremos un ejemplo de por qu usarlo.
Por qu usarlo?
La programacin orientada a objetos supone un desafo al interactuar con sistemas de
almacenamiento de datos. Las teoras de normalizacin suelen dividir las tablas, lo que
representa un problema usar una serie de cdigo extra, para que los programadores cada
vez que necesitamos alcanzar informacin de otra tabla. Miremos el siguiente ejemplo.

ejemplo.
En el ejemplo se muestra la tabla products y category para alcanzar estas tablas seria de las
siguientes formas.
sql
SELECT Products.ProductName, Categories.CategoryID, Categories.CategoryName
FROM Categories INNER JOIN
Products ON Categories.CategoryID = Products.CategoryID
Note que aun no est el cdigo para conectarse a la base de datos ni el DataAdapter y el
DataSet.
linq
DataClassesDataContext db = new DataClassesDataContext();
var query = from p in db.Products
join c in db.Categories
on p.CategoryID equals c.CategoryID
select new { p.ProductName, c.CategoryID, c.CategoryName };
GridView1.DataSource = query;
GridView1.DataBind();
Con entities:
NorthwindModel.NorthwindEntities ne = new NorthwindModel.NorthwindEntities();

var products = from p in ne.Products.Include("Categories")


select new { p.ProductName, p.Categories.CategoryName };
GridView1.DataSource = products;
GridView1.DataBind();
Puede notar que es ms fcil utilizar Entities cuando nuestra base de datos est
normalizada, seguro ustedes han superado este problema simplemente creando una vista o
un store procedure sin embargo quiero hacer notar que entities lo hace automticamente.
Como inicio:
Agregue un nuevo elemento, se mostrara la pantalla siguiente:

Elija Ado .net Entity Data Model y siga el asistente, en el asistente elija las tablas que
necesita ahorita seria Product y category. Al terminar se mostrara el siguiente modelo y ya
puede usar el cdigo superior.