Está en la página 1de 12

5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Enrique Zavaleta Blog (http://blog.enrique-


zavaleta.com/)
Inicio (http://blog.enrique-zavaleta.com/)
Acerca de mi (http://blog.enrique-zavaleta.com/acerca-de-mi/)
Contacto (http://enrique-zavaleta.com?ref=blog)

Como crear un proyecto


MVC con Entity
Framework a partir de una
base de datos
 Posted on noviembre 10, 2016 (http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-
partir-de-una-base-de-datos/)  Enrique Zavaleta (http://blog.enrique-zavaleta.com/author/enrique-zavaleta/)
http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 1/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

 Posted in .Net (http://blog.enrique-zavaleta.com/category/net/), Entity Framework (http://blog.enrique-


zavaleta.com/category/entity-framework/), MVC (http://blog.enrique-zavaleta.com/category/mvc/)

Aunque MVC en .Net tiene muuuuucho tiempo y existen muuuuuchos tutoriales, la mayoria habla
de como crear la base de datos (el modelo) desde codigo, este post mostrara como como crear un
proyecto MVC con Entity Framework a partir de una base de datos, generando el codigo del modelo
a partir del esquema en la DB.

Creando el proyecto MVC


Al momento de escribir este post, estoy usando Visual Studio Community 2015
(https://www.visualstudio.com/downloads/), por lo que para crear el proyecto nos vamos File >
New > Project,  una vez abierta la ventana de New project, dentro de Visual C# > Web
encontraremos la opcion ASP.NET Web Application, ponemos el nombre del proyecto y le damos
en OK.

Creando el proyecto MVC

Nos saldra una pantalla donde seleccionaremos el template que queremos, en este caso
(obviamente) seleccionamos MVC y presionar OK. Aquí es importante prestar especial atención al
botón de Change Authentication del lado derecho, ya que en caso de querer manejar la
autenticacion por nosotros mismos (por ejemplo en caso de una aplicación interna) deberemos de
presionar dicho botón y seleccionar No Authentication, y si queremos que .Net lo maneje por
nosotros (lo cual hace bastante bien) deberemos dejar Individual User Accounts, que es la default;
tambien hay otras opciones pero estas dos son las dos mas comunes.

Entity Framework

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 2/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Una vez Visual Studio termine de generar los archivos necesarios, lo primero que haremos sera
agregar Entity Framework (https://www.asp.net/entity-framework) al proyecto, para
esto descargaremos el NuGet que lo contiene, necesitaremos ir a Tools > NuGet Package Manager
> Manage NuGet Packages for solution… y sobre el tab de Browse tendran que escribir
EntityFramework, y darle en Install.

Entity Framework, es el ORM (Object-Relational mapping)


(https://es.wikipedia.org/wiki/Mapeo_objeto-relacional) desarrollado por Microso  que permite la
interacción a los datos de manera sencilla, es decir, nos quita el tedioso trabajo de estar creando
nosotros los métodos, clases y utilerias para accesar a la DB cada vez que creamos un proyecto.


Agredando el NuGet Entity Framework

Creando el modelo
Ya que tenemos instalado Entity Framework, utilizaremos un wizard para generar todo el código en
C# de nuestra DB, es decir, la librería generara por nosotros las entidades (clases) en C# que
representaran a cada una de las entidades (tablas) en la DB, y asi poder interactuar con SQL Server
en este caso.

Para generar estas clases daremos click derecho en la carpeta de Models > Add >  New
Item…, posterior a esto seleccionaremos Data dentro de Visual C# y  elegiremos ADO.NET Entity
Data Model, escribimos el nombre del modelo (algo así como InventoryModel, CoursesModel, etc) y
presionamos Add.

En la ventana que sale elegiremos la primera opción, EF Designer from database, y posteriormente
saldrá una ventana, preguntándonos por la cadena de conexión, hacemos click in New Connection
y ponemos los datos que nos pide, seleccionamos la DB y le damos OK.

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 3/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Le damos en Next y luego nos aparecerá una ventana, pidiendo que selecciones los objetos que
quieres mapear, seleccionamos las tablas, y en caso de que tengas algunos procedimientos
almacenados o vistas tambien, aunque en teoría si vas a usar Entity framework no deberías de
tener procedimientos almacenados (hay situaciones en que es necesario, así que si los
necesitas hay una forma muuuy fácil de llamarlos), seleccionamos las primeras dos opciones

Opciones a seleccionar para generar las entidades / clases

Y finalmente presionamos Finish y se nos mostrara el diagrama de nuestra DB lo cual significa que
ya se crearon las clases necesarias.

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 4/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Diagrama de la DB generado por Entity Framework


Creando el controlador y las 

vistas
Bien, ya que Visual Studio y Entity Framework generaron las clases necesarias para la interacción
con la DB, ahora es tiempo de que tambien generen el controlador (la lógica) y las vistas (lo que ve
el usuario, es decir básicamente HTML).

Click derecho en la carpeta de Controllers > Add > New Sca olded Item…, seleccionamos MVC 5
Controller with views, using Entity Framework, esto nos abrirá una ventana donde tendremos que
seleccionar el Model Class (es decir la tabla / entidad / clase ) y el Data Context Class (es decir la
conexión que creamos en el paso anterior), es importante seleccionar los siguientes puntos:
Generate views, Reference script libraries y Use a layout page, así como a continuación:

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 5/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Agregando el controlador y las vistas 


Le damos en Add y listo, bueno casi, si les aparece un error como el siguiente, solo tenemos que
hacer justo lo que dice, compilar el proyecto y ahora si agregar el controlador y las vistas.

Si te sale este error, compila el proyecto y listo

El resultado
Es hora de ver que es lo que hemos hecho sin escribir ni una sola palabra de código, si corremos el
proyecto, nos encontraremos con la pantalla inicial del proyecto.

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 6/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Como acabo de agregar el controlador y las vistas de la entidad User, en la URL solamente tengo
que agregar el controlador con lo que (en mi caso) queda http://localhost:49998/Users
(http://localhost:49998/Users), lo que nos lleva a la vista Index, que nos mostrara la lista de los
usuarios, que ene este caso esta vacia.

Vista Index de la entidad User



Y si le damos en Create New nos llevara a la vista Create, donde podemos dar de alta al nuevo
usuario, e incluso podemos ver que por default valida que los datos sean del tipo correcto, como es 
el caso del campo RecordDate que es de tipo DateTime, nos pide una fecha valida.

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 7/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Vista Create de la entidad User validando un campo fecha

Hay otras validaciones utiles que podemos declarar de manera sencilla del lado del servidor en C#
y nos harán la validación del lado del cliente en Javascript tambien, de eso hablare en otro post.

Si ponemos los datos validos y presionamos el botón para agregar el registro, lo que pasara es que


nos mostrara de nuevo la vista de Index, pero ahora estará el registro que se acaba de guardar.

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 8/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Registro agregado

Como podemos  ver Entity Framework nos creo una base funcional donde podemos ver, dar altas,
bajas y cambios sin escribir ni una sola palabra de código, y digo una base funcional, porque muy
probablemente van a querer agrear ciertas validaciones (en este post vemos como hacer 

validaciones con una sola linea usando Data Annotations (http://blog.enrique-



zavaleta.com/validaciones-con-data-annotations-en-mvc-con-entity-framework-database-first/)),
localizaciones (y en este otro post podemos aprender a como hacer la aplicación en multilenguaje 
(http://blog.enrique-zavaleta.com/como-hacer-una-aplicacion-mvc-multilenguaje-en-net/)),
autorización, autenticación y funcionalidades extra que no se crearon por default.

Gracias a esta base generada nos vamos a ahorrar todo el desarrollo básico que se necesita para
poder lograr este CRUD y enfocarnos a lo que realmente le agregara valor al proyecto.

 .Net (http://blog.enrique-zavaleta.com/tag/net/), Entity Framework (http://blog.enrique-


zavaleta.com/tag/entity-framework/), MVC (http://blog.enrique-zavaleta.com/tag/mvc/)

 Porque SQL Server se salto 1000 IDs BaseLibrary: una pequeña librería para
(http://blog.enrique-zavaleta.com/porque-sql- conectarse a SQL Server desde .NET en C#
server-se-salto-1000-ids/) (http://blog.enrique-zavaleta.com/baselibrary-
una-pequena-libreria-para-conectarse-a-sql-
server-desde-net-en-c/) 

Comentario blog.enrique-zavaleta 
1 Iniciar sesión

Recomendar 1 t Tweet f Compartir ordenar por el mejor


http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 9/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Únete a la discusión...

INICIAR SESIÓN CON


O REGISTRARSE CON DISQUS ?

Nombre

Ricardo Figueroa Cisneros • hace un año


tengo un problema queriendo hacer inserción de registros en tablas diferentes pero que
están relacionadas, no encuentro la manera de hacerlo, tomo datos en un dropdownlist
desde una base de datos y quiero tomar el valor que he seleccionado de esos dropdown
y hacer la inserción de los registros pero en la segunda pantalla, es una aplicación web
MVC.

Apenas estoy conociendo ASP.NET

si me pueden ayudar, se los agradecería muchisimo.

ver más

△ ▽ • Responder • Compartir ›

AMBIÉN EN BLOG.ENRIQUE-ZAVALETA

omo hacer una aplicación MVC Notificaciones Push – Parte 2:


ultilenguaje en .NET Notificaciones push en Xamarin Forms y
comentarios • hace 2 años 2 comentarios • hace 2 años
Enrique Zavaleta — Hola Gustavo, la verdad Enrique Zavaleta — Que bueno que fue de
es que no tengo ese ejemplo en concreto en ayuda, Saludos
algún repositorio publico, no debería de

orque SQL Server se salto 1000 IDs Validaciones con Data Annotations en
comentarios • hace 2 años MVC en .Net
Enrique Zavaleta — En esta respuesta de 3 comentarios • hace 2 años
Kitty puedes encontrar la forma en la que Ailin Fillión — Genial, muchas gracias!
aplicar la bandera 272.Aunque realmente no

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 10/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Inicio (http://blog.enrique-zavaleta.com/)
Contacto (http://enrique-zavaleta.com/?ref=blog)
Acerca de mi (http://blog.enrique-zavaleta.com/acerca-de-mi/)
Twitter (https://twitter.com/qiiqeeZavaleta)
Ver perfil y proytectos en GitHub (https://github.com/JEnriqueZS)

(http://stackoverflow.com/users/4773983/enrique-zavaleta)

ETIQUETAS

.Net (http://blog.enrique-zavaleta.com/tag/net/) Amazon AWS SNS 


(http://blog.enrique-zavaleta.com/tag/amazon-aws-sns/) Autenticacion (http://blog.enrique-zavaleta.com/tag/autenticacion/) Autorizacion

(http://blog.enrique-zavaleta.com/tag/autorizacion/) Azure (http://blog.enrique-zavaleta.com/tag/azure/) Base library (http://blog.enrique-

zavaleta.com/tag/base-library/) CSV (http://blog.enrique-zavaleta.com/tag/csv/) Data Annotations (http://blog.enrique-



zavaleta.com/tag/data-annotations/) Decorators (http://blog.enrique-zavaleta.com/tag/decorators/) DropDown (http://blog.enrique-

zavaleta.com/tag/dropdown/) Entity Framework (http://blog.enrique-


zavaleta.com/tag/entity-framework/) Excel (http://blog.enrique-zavaleta.com/tag/excel/) Mail
(http://blog.enrique-zavaleta.com/tag/mail/) MVC (http://blog.enrique-
zavaleta.com/tag/mvc/) Notificaciones Push (http://blog.enrique-zavaleta.com/tag/notificaciones-push/)

Primary Key (http://blog.enrique-zavaleta.com/tag/primary-key/) SQL (http://blog.enrique-zavaleta.com/tag/sql/) SqlBulkCopy (http://blog.enrique-

zavaleta.com/tag/sqlbulkcopy/) SQL Server (http://blog.enrique-zavaleta.com/tag/sql-


server/) SQL Server 2012 (http://blog.enrique-zavaleta.com/tag/sql-server-2012/) Transaction (http://blog.enrique-
zavaleta.com/tag/transaction/) Web Forms (http://blog.enrique-zavaleta.com/tag/web-forms/) Xamarin (http://blog.enrique-zavaleta.com/tag/xamarin/)

Xamarin.Forms (http://blog.enrique-zavaleta.com/tag/xamarin-forms/)

ACERCA DEL BLOG

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 11/12
5/2/2019 Como crear un proyecto MVC con Entity Framework a partir de una base de datos - Enrique Zavaleta Blog

Hay muchas cosas (herramientas, técnicas, soluciones a problemas y tecnologías) que en esta parte del mundo
todavía no han sido digeridas del todo; este blog tiene la intención ayudar a aquellos que están
interesados en la programación, que tienen algún problema o buscan algún ejemplo de algo que
están tratando de implementar.

Aparte de compartir piezas de código que nos ayuden a todos (incluyéndome) a mejorar la calidad del
código que desarrollamos :)

http://blog.enrique-zavaleta.com/como-crear-un-proyecto-mvc-con-entity-framework-a-partir-de-una-base-de-datos/ 12/12

También podría gustarte