Sie sind auf Seite 1von 10

INGENIERA DE SISTEMAS

PROYECTOS 1

ENFOQUES DEL ENTITY FRAMEWORK


PRESENTADO POR:
MARA JOS CHVEZ ESTRADA

DOCENTE:
ING. SAMUEL MESTANZA ALCNTARA

Cajamarca, Abril Del 2012

Enfoques del Entity Framework

Enfoques del Entity Framework


Mara Jos Chvez Estrada e-mail: sweet2812@hotmail.com 702693@comunidad.upn.edu.pe

RESUMEN: En este documento se hablar acerca de


los enfoques del Entity Framework 4, ofreciendo una visin general de estos enfoques de desarrollo. Con Entity Framework podemos generar un modelo conceptual desde tres enfoques distintos: a partir de base de datos existente (llamado enfoque databasefirst), partiendo desde cero, comenzando con un modelo vaco (enfoque model-first) o utilizando entidades POCO que es llamado enfoque code-first.

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. Actualmente con Entity Framework podemos elegir entre 3 enfoques diferentes para crear el modelo conceptual y resolver nuestras necesidades de persistencia:

PALABRAS CLAVE: Entity Framework, DatabaseFirst, Model-First, Code-Firs.

1 Qu es Entity Framework?
Entity Framework es una tecnologa desarrollada por Microsoft, que a travs de ADO.NET genera un conjunto de objetos que estn directamente ligados a una Base de Datos, permitiendo a los desarrolladores manejar dichos objetos en lugar de utilizar lenguaje SQL contra la Base de Datos. Los arquitectos y programadores de aplicaciones orientadas a datos se han enfrentado a la necesidad relaciones de y la lograr lgica dos las de objetivos entidades, los muy las diferentes. Deben modelar

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 1

Enfoques del Entity Framework

. Database First: El modelo conceptual se crea a partir de una base de datos existente. Model First: se crea el modelo conceptual y se genera la base de datos. Code First: nuevo a partir de EF 4.1. Un enfoque simplificado que permite mapear nuestras clases POCO a la base de datos usando convencin, Data Annotations o Fluent API. El siguiente grfico muestra un ejemplo del contenido XML de un archivo .edmx: y el mapeo entre ambos modelos (MSL Mapping Specification Language)

2 DATABASE FIRST
Es Este enfoque permite inferir un modelo de clases a partir del esquema de una base de datos existente. importante entender que el modelo conceptual (CSDL) no debe ser necesariamente igual al modelo de datos (SSDL), y por ello existe el modelo de mapeo (MSL). A partir de ese archivo .edmx, se genera automticamente contiene las clases que un representan archivo a las .edmx.designer.cs (.vb en el caso de VB.NET) que entidades del modelo conceptual.

Usando Visual Studio, podemos agregar un tem de proyecto llamado Entity Data Model e iniciar un asistente para conectarnos a una base de datos, seleccionar los objetos que queremos incluir en el modelo (tablas, vistas, stored procedures) y generar un archivo .edmx que contiene una representacin XML de: El modelo conceptual (CSDL Conceptual Schema Definition Language) el modelo de datos (SSDL Store Schema Definition Language)

Enfoques del Entity Framework

. Puede observarse que estas clases heredan de EntityObject y tienen varios atributos y propiedades dependientes de Entity Framework. Las clases generadas en el archivo .designer son Tpicamente, se crea una clase (entidad) por cada tabla de la base de datos, incluyendo propiedades que se mapean a campos y las relaciones entre las tablas son representadas mediante propiedades de navegacin. Adems de las clases de entidades se genera tambin una clase que hereda de ObjectContext y representa el contexto de base de datos. A travs de esta clase tendremos acceso a las entidades y colecciones del modelo y podremos realizar todas las operaciones de lectura y escritura de datos desde y hacia la base de datos subyacente. En el siguiente ejemplo, BookstoreEntities es la clase generada por EF que hereda deObjectContext: Habr que actualizar el modelo conceptual. Esto puede lograrse fcilmente a travs del designer del edmx: Qu pasa si la base de datos cambia? re-generadas cada vez que se actualiza el modelo en el archivo .edmx. En consecuencia, no podemos modificar o agregar cdigo a esas clases. La buena noticia es que son clases parciales y podemos extenderlas en otro archivo o bien podemos usar herencia. Puedo modificar o extender las clases de entidades generadas por EF?

Luego podemos usarla para acceder al modelo:

Se inicia el asistente de actualizacin en el cual podemos agregar nuevas tablas, vistas o stored procedures, refrescar las tablas existentes o eliminar otras.

Enfoques del Entity Framework

. Cuando tenemos nuestro modelo conceptual

completo, podemos generar los scripts de SQL para crear el esquema de base de datos.

Una vez finalizado el asistente, el archivo edmx se actualiza y se re-generan las clases de entidades. Luego habr que actualizar el cdigo que hace referencia a las entidades modificadas (si corresponde).

3 MODEL FIRST
La idea aqu es crear primero el modelo

Qu pasa si la base de datos cambia? En realidad, la base de datos debe cambiar como consecuencia conceptual. Entonces, Qu pasa si el modelo conceptual cambia? Habr que actualizar el modelo conceptual de EntityFramework y generar los scripts SQL de creacin de la base de datos. Desafortunadamente, los scripts SQL generados a de un cambio en el modelo

conceptual y a partir de este generar la base de datos.

Usando Visual Studio podemos arrancar creando un archivo .edmx vaco y utilizamos el diseador visual para crear nuestras entidades con sus propiedades y relaciones con otras entidades.

partir del modelo conceptual son solo scripts de creacin. Es decir, no son scripts de cambios o actualizacin de nuestro esquema de base de datos. En consecuencia, deberamos borrar la base de datos y volver a crearla. Obviamente, esto

Enfoques del Entity Framework

. no ser factible en un entorno de produccin y deberemos elegir otras alternativas. Por ejemplo: Actualizar el esquema de datos a travs de scripts escritos a manos o generados mediante una herramienta de comparacin de esquema de datos. Tambin podramos alterar el esquema usando el Administrador de base de datos. Luego deberamos, actualizar el modelo conceptual de Entity Framework (edmx) y asegurarnos que el mapeo hacia la base de datos es correcto. Entity Framework permite utilizar clases de datos Finalmente, actualizar el cdigo existente en la aplicacin. Ya tengo mi modelo conceptual creado, como sigo? Bueno, contra a el partir modelo de ahora no y difiere realizar del las personalizadas junto con su modelo de datos sin realizar ninguna modificacin en las clases de datos. Esto significa que podr utilizar objetos CLR "antiguos" (POCO), tales como objetos de dominio existentes, con el modelo de datos. Estas clases de datos POCO (tambin conocidos como objetos que ignoran la la persistencia), de asignadas los a entidades definidas en un modelo de datos, admiten mayora de mismos insercin, comportamientos consulta, Aqu de inserta un nuevo trmino que es POCO: POCO: Son las siglas de Plain Old C# Object, y se refieren a clases simples que no dependen de ninguna framework. Es un trmino derivado del concepto del mundo Java: POJO.

enfoque Database First. Podemos escribir querys conceptual operaciones de persistencia necesarias. Las clases de entidades generadas con Model First son POCO? De forma predeterminada metadata y NO. Las de clases clases

actualizacin y eliminacin que los tipos de entidad generados por las herramientas Entity Data Model. Requisitos de la asignacin Para utilizar entidades POCO con un modelo de datos, el nombre del tipo de entidad debe ser igual que la clase de datos personalizada, y cada propiedad del tipo de entidad debe asignarse a una propiedad pblica de la clase de datos personalizada. Los nombres de los tipos y de cada una de las propiedades asignadas deben ser equivalentes.

contienen

heredan

dependientes de EntityFramework. Al igual que con Database First, disponemos de una clase que hereda de ObjectContext que nos permite interactuar con el modelo.

Enfoques del Entity Framework

4 CODE FIRST
Este enfoque est disponible a partir de la versin ADO.NET Entity Framework 4.1 y nos permite crear un modelo de clases POCO (Plain Old CLR Object) a partir del cual podemos generar una base de datos y/o mapear esas clases a una base de datos existente. Aqu no existe un archivo edmx con las

Bien, podemos resolver estas cuestiones y otras tantas a travs de: 1. Data Annotations 2. Mapping Fluent API Data Annotations Estas ions y clases permiten estn disponibles en el o

namespace System.ComponentModel.DataAnnotat especificar restricciones validaciones, especificar nombres de tablas o campos, etc.

definiciones

XML del modelo conceptual, el

modelo de datos y el mapeo entre ambos. El modelo conceptual est definido por el conjunto de clases que hemos creado para representar a las entidades de nuestro modelo de dominio. La idea es que nuestras clases POCO sean mapeadas directamente a la base de datos. La ventaja de usar clases POCO es que el modelo de clases es ms limpio y las clases no tienen dependencia con EntityFramework (como sucede cuando las entidades heredan deEntityObject, implementan atributos). La experiencia indica que si ya tenemos una base de datos heredada, es altamente probable que haya diferencias con el modelo conceptual utilizado en la aplicacin. Entonces: ciertas interfaces y contienen

Mapping Fluent API La segunda alternativa que Code First ofrece para definir el mapeo entre el modelo conceptual y la base de datos es mediante Fluent API. Esta API permite especificar la configuracin de mapeo y otras configuraciones mediante cdigo. Y el contexto de datos de Code First? De forma predeterminada, con el

Qu hacemos cuando el esquema de base de datos es diferente al modelo conceptual?

Qu tal si quiero especificar restricciones, tipos de datos o validaciones a los campos?

enfoque Database First y Model First disponemos de una clase ObjectContext del cual hereda el contexto de datos de nuestra aplicacin.

Enfoques del Entity Framework

. Con el enfoque Code First tenemos un nuevo contexto llamado DbContext del cual debe heredar el contexto de datos de nuestra aplicacin. New Code First Migrations Feature: esta es una de las principales caractersticas de la nueva versin de EF y nos permite ir migrando nuestra base de datos creada con Code First a media que el modelo va cambiando. Esto quiere decir que, entre otras cosas, podemos recuperar una instancia determinada de la base de datos entre las distintas versiones (migraciones) que hayamos generado. En el contexto de datos, bsicamente estamos definiendo cules son los conjuntos de entidades que sern mapeados a la base de datos. Adicionalmente, podemos usar inicializadores de bases de datos, especificar configuraciones de mapeo o interceptar las operaciones de SaveChanges (entre otras). DbContext no es ms que una versin simplificada de ObjectContext, y tambin puede ser usando con los enfoques Database First y Model First. Removal of EdmMetadata table: como ya hemos visto, con Code First podemos crear la base de datos simplemente ejecutando la app. A la creacin se le suman todas las ventajas del esquema de generacin que forma parte de Migrations. Data Annotations on non-public properties: por defecto Code First no incluye las Si dichas propiedades protected,private o internal. otras API, los Data

utilizbamos estos modificadores por medio de

Anottations en

propiedades eran ignoradas. En esta nueva versin se ha modificado esta situacin por lo que las Data Anottations en esos casos sern procesadas. More configuration file settings: ahora es posible definir muchas ms caracteristicas sobre Code configuracin. A diferencia de los dos primeros enfoques (Database First y Model First), no vamos a contar con la ayuda de un diseador de entidades y asociaciones (Entity Data Model), por lo que va a ser muy importante nuestra implicacin a la hora de definir los objetos. 7 First en nuestro archivo de

5 LO NUEVO DE CODE FIRST Y LOS


OTROS ENFOQUES DE DESARROLLO
Como ya vimos anteriormente recientemente sali a de la luz la versin

relase
que

de

Entity

Framework 4.3.0 y en la que ya podemos disfrutar muchas caractersticas seguramente estarn disponibles en la versin 5.0 que viene en camino. Entre las principales caractersticas que podemos encontrar en versin estn:

Enfoques del Entity Framework

. Adems de la simplificacin de nuestras clases, tambin se ha modificado la creacin del contexto que va a estar encargado de realizar las operaciones contra la Base de Datos. En los dos enfoques anteriores, nuestro contexto haca uso de la clase Base ObjectContext, y Code First va a hacer uso de la clase DbContext que es una simplificacin del contexto. ACERCA DE CODE FIRST Code First es el nuevo enfoque soportado por Entity Framework. Permite mapear nuestras clases POCO directamente a la base de datos. DbContext API nos permite realizar las operaciones de acceso a datos. Las clases generadas automticamente no son POCO, pero podemos generar clases POCO usando otras herramientas de generacin de cdigo.

6 CONCLUSIONES
Podramos llegar a decir que Entity Framework es una forma de abstraerse del tipo de Base de Datos que existe detrs de un sistema, gracias al mapeo de las tablas hacia entidades. Acerca de DATABASE FIRST El enfoque Database First nos permite generar rpidamente nuestro modelo de clases y mantenerlo sincronizado cuando el modelo de datos cambia. Las clases generadas heredan de EntityObject y se utiliza una clase que hereda de ObjectContext para administrar el modelo y realizar las operaciones de persistencia.

7 REFERENCIAS
[1] Sobre WCF, DTO, EF, POCO y los principios
de la programacin ltima actualizacin: Enero del 2012. http://www.programandonet.com/site/sobre-wcfdto-ef-poco-y-los-principios-de-la-programacion [2] Entity Framework: Database First

ltima actualizacin: Junio 2011


http://gustavoazcona.blogspot.com/2011/06/entit y-framework-database-first.html

Acerca de MODEL FIRST El enfoque Model First nos permite crear primero un modelo conceptual y generar luego el esquema de base de datos. [3] Entity Framework: Model First

ltima actualizacin: Julio del 2011


http://gustavoazcona.blogspot.com/2011/07/entit y-framework-model-first.html

Al igual que Database First se basa en un archivo edmx para almacenar las definiciones XML del modelo conceptual, modelo de datos y mapeo entre ambos.

Enfoques del Entity Framework

. [4] Entity Framework: Code First

ltima actualizacin: Julio del 2011


http://gustavoazcona.blogspot.com/2011/07/entit y-framework-code-first.html [5] Entity Framework: Code First (1)

ltima actualizacin: Julio del 2011


http://www.programacion.com/articulo/entity_fra mework_code_first_1_870 [6] Entity Framework: http://programacion.com/articulo/entity_framewor k_713 [7] Informacin general de Entity Framework: http://msdn.microsoft.com/es/library/bb399567.a spx [8] Entity Framework: Guias y enfoque: ltima actualizacin: Agosto del 2010 http://alexjimenez.wordpress.com/2010/08/31/en tity-framework-guas-bsicas-y-el-enfoque/ [9] We love JavasCript ltima actualizacin: Julio del 2011 http://geeks.ms/blogs/mrubino/ [10] Entity framework 4.3.0 Released ltima actualizacin: febrero del 2012 http://sebys.com.ar/2012/02/ [11] POCO en Entity framework 4.0 ltima actualizacin: enero del 2010 http://geeks.ms/blogs/adiazmartin/archive/2010/ 01/17/poco-en-entity-framework-4-0.aspx

Das könnte Ihnen auch gefallen