You are on page 1of 9

MODEL FIRST

INTRODUCCION:
Una de las caractersticas que presenta Entity Framework es la posibilidad de definir un
modelo conceptual y trabajar sobre este para luego crear un almacn fsico de datos. Las
ventajas de esto, refuerzan sin duda el porque de esta ORM, y es que la posibilidad de
desarrollar toda la lgica del aplicativo sin preocuparse por que la soportara o como o quien, le
da la posibilidad al desarrollador de aplicar todo su tiempo en lo que mejor sabe hacer.
REQUISITOS PREVIOS
Necesitar tener instalados Visual Studio 2010 y Visual Studio 2012, Si usa Visual Studio 2010,
tambin debe tener NuGet instalado.
1. CREAR LA APLICACIN
Para mantener la simplicidad, vamos a generar una aplicacin de consola bsica que use
ModelFirst para el acceso a los datos:

Abra Visual Studio


Archivo ->Nuevo ->Proyecto
Seleccione Windows en el men de la izquierda y aplicacin de consola
Escriba ModelFirstSample como nombre
Seleccione Aceptar

2. Crear un modelo
Vamos a usar Entity Framework Designer, que se incluye como parte de Visual Studio, para
crear nuestro modelo.

Proyecto ->Agregar nuevo elemento


Seleccione Datos en el men izquierdo y despus Entity Data Model de ADO.NET
Escriba BloggingModel como nombre y haga clic en Aceptar; de esta forma inicia el

Asistente para Entity Data Model


Seleccione Modelo vaco y haga clic en Finalizar

Entity Framework Designer se abre con un modelo en blanco. Ahora podemos empezar a
agregar las entidades, las propiedades y las asociaciones al modelo.

Haga clic con el botn secundario en la superficie de diseo y seleccione Propiedades


En la ventana Propiedades, cambie el Nombre del contenedor de entidades a
BloggingContext
Es el nombre del contexto derivado que se generar automticamente, el contexto
representa una sesin con la base de datos, que nos permite consultar y guardar los
datos

Haga clic con el botn secundario en la superficie de diseo y seleccione Agregar


nueva ->Entidad
Escriba Blog como nombre de entidad y BlogId como nombre de clave y haga clic en
Aceptar

Haga clic con el botn secundario en la nueva entidad en la superficie de diseo y


seleccione Agregar nuevo ->Propiedad escalar, escriba Name como nombre de la

propiedad.
Repita este proceso para agregar una propiedad Direccin URL.
Haga clic con el botn secundario en la propiedad Direccin URL en la superficie de
diseo y seleccione Propiedades, en la ventana Propiedades, cambie la opcin

Acepta valores NULL a True


Esto nos permite guardar un blog en la base de datos sin asignarle una direccin URL
Utilizando las tcnicas que ha aprendido, agregue una entidad Post con una propiedad

de clave PostId
Agregue las propiedades escalares Content y Title a la entidad Post

Ahora que tenemos un par de entidades, es hora de agregar una asociacin (o relacin) entre
ellas.
Haga clic con el botn secundario en la superficie de diseo y seleccione Agregar

nueva ->Asociacin
Haga que un extremo de la relacin seale a Blog con una multiplicidad de Uno y que

el otro extremo seale a Post con una multiplicidad de Muchos


Esto significa que un Blog tiene muchos Posts y un Post pertenece a un Blog
Asegrese de que el cuadro Agregar propiedades de clave externa a la entidad
'Post' est activado y haga clic en Aceptar

Ahora tenemos un modelo simple con el que podemos generar una base de datos y usar para
leer y escribir datos.

3. GENERAR LA BASE DE DATOS


En nuestro modelo, Entity Framework puede calcular un esquema de la base de datos que nos
permitir almacenar y recuperar los datos con el modelo.
El servidor de bases de datos que se instala con Visual Studio vara en funcin de la versin de
Visual Studio que se haya instalado:

Si usa Visual Studio 2010, crear una base de datos de SQL Express.
Si usa Visual Studio 2012, crear una base de datos de LocalDb.

Continuemos y generemos la base de datos.

Haga clic con el botn secundario en la superficie de diseo y seleccione Generar

base de datos desde modelo


Haga clic en Nueva conexin y especifique LocalDb ((localdb)\v11.0) o SQL Express
(.\SQLEXPRESS), dependiendo de qu versin de Visual Studio use, escriba
ModelFirst.Blogging como nombre de la base de datos.

Seleccione Aceptar y se le preguntar si desea crear una base de datos nueva;

seleccione S
Seleccione Siguiente y Entity Framework Designer calcular un script para crear el

esquema de la base de datos


Una vez que se muestre el script, haga clic en Finalizar y el script se agregar al

proyecto y se abrir
Haga clic con el botn secundario en el script y seleccione Ejecutar. Se le pedir que
especifique la base de datos a la que conectarse. Especifique(localdb)\v11.0 o
.\SQLEXPRESS, segn qu versin de Visual Studio use

La idea aqu es crear primero 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.
Cuando tenemos nuestro modelo conceptual completo, podemos generar los scripts de SQL
para crear el esquema de base de datos.

Qu pasa si la base de datos cambia?

En realidad, la base de datos debe cambiar como consecuencia de un cambio en el modelo


conceptual.
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 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 no ser factible en un entorno de produccin y deberemos elegir otras alternativas. Por
ejemplo:
1.

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
2.
Luego deberamos, actualizar el modelo conceptual de Entity
Framework (edmx) y asegurarnos que el mapeo hacia la base de datos es correcto.
3.
Finalmente, actualizar el cdigo existente en la aplicacin.
Bueno, a partir de ahora no difiere del enfoque DatabaseFirst. Podemos escribir querys contra
el modelo conceptual y realizar las operaciones de persistencia necesarias.
Las clases de entidades generadas con ModelFirst son POCO?
De forma predeterminada NO. Las clases contienen metadata y heredan de clases
dependientes de EntityFramework. Al igual que con DatabaseFirst, disponemos de una clase
que hereda de ObjectContext que nos permite interactuar con el modelo.
Sin embargo, es posible tener clases POCO agregando un tem de generacin de cdigo
llamado: ADO.NET POCO EntityGenerator.

Esto elimina todo el cdigo generado


clasesPOCO basadas en plantillas T4.

en

el

archivo

.edmx.designer.cs y

crea

Otra alternativa para generar clases POCO es eliminar la herramienta de generacin de


cdigo EntityModelCodeGenerator asociada al archivo .edmx y generar las clases a mano.

Para finalizar este post, es interesante saber que estas tcnicas para generar clases POCO,
tambin son aplicables al enfoque DatabaseFirst.

CONCLUSIN

El enfoque ModelFirst nos permite crear primero un modelo conceptual y generar

luego el esquema de base de datos.


Al igual que DatabaseFirst se basa en un archivo edmx para almacenar las

definiciones XML del modelo conceptual, modelo de datos y mapeo entre ambos.
Las clases generadas automticamente no son POCO, pero podemos generar clases
POCO usando otras herramientas de generacin de cdigo.

You might also like