Model First - Entity Framework

9
MODEL FIRST INTRODUCCION: Una de las características que presenta Entity Framework es la posibilidad definir un modelo conceptual y trabajar sobre este para luego crear un almacén físico de ventajas de esto refuer!an sin duda el porque de esta "#$ y es que la posibi desarrollar toda la l%gica del aplicativo sin preocuparse por que la soportara da la posibilidad al desarrollador de aplicar todo su tiempo en lo que mejor s REQUISITOS PREVIOS 'ecesitar( tener instalados )isual *tudio +,-, y )isual *tudio +,-+ *i usa )i también debe tener 'u et instalado. 1. CREAR LA APLICACIÓN /ara mantener la simplicidad vamos a generar una aplicaci%n de consola b(sica $odelFirst para el acceso a los datos0 1bra )isual *tudio Archivo 23 Nuevo 23 Proyeco *eleccione !i"#o$% en el men4 de la i!quierda y &'(ic&ci)" #e co"%o(& Escriba Mo#e(Fir%S&*'(e como nombre *eleccione Ace'&r +. Cre&r u" *o#e(o )amos a usar Entity Framework 5esigner que se incluye como parte de )isual *t crear nuestro modelo. Proyeco 23 A,re,&r "uevo e(e*e"o *eleccione D&o% en el men4 i!quierdo y después E"iy D&& Mo#e( #e ADO.NET Escriba -(o,,i",Mo#e( como nombre y &aga clic en Ace'&r 6 de esta forma inicia el 1sistente para Entity 5ata $odel *eleccione Mo#e(o v&c o y &aga clic en Fi"&(i/&r

description

Breve resumen sobre Model First de Entity Framework donde podemos apreciar los pasos para hacer un modelo de una base de datos por medio de tablas creadas en C# de Visual Estudio 2013

Transcript of Model First - Entity Framework

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.

UsandoVisual Studiopodemos arrancar creando un archivo .edmxvaco 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 datos2. 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 enfoqueDatabaseFirst. 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 deEntityFramework. Al igual que conDatabaseFirst, disponemos de una clase que hereda deObjectContextque 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 en el archivo .edmx.designer.csy crea clasesPOCObasadas enplantillas T4.

Otra alternativa para generar clasesPOCOes eliminar la herramienta de generacin de cdigoEntityModelCodeGeneratorasociada al archivo .edmxy generar las clases a mano.

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

CONCLUSIN El enfoqueModelFirstnos permite crear primero un modelo conceptual y generar luego el esquema de base de datos. Al igual queDatabaseFirstse basa en un archivoedmxpara almacenar las definiciones XML del modelo conceptual, modelo de datos y mapeo entre ambos. Las clases generadas automticamente no sonPOCO, pero podemos generar clases POCO usando otras herramientas de generacin de cdigo.