Ir al contenido principal

Configurar Entity Framework en .Net Core 3.1, usando SQL Server.

En el post de hoy aprenderemos como configurar Entity framework (EF) para trabajar en una aplicación .Net.
Entity es un Framework ORM (Mapeo Objeto-Relacional) que nos permite acceder más fácilmente a la base de datos, funciona de tal forma que los objetos de negocio están directamente relacionados con las tablas y columnas de la base de datos. Hay tres formas de programar en EF: Code First, Database First y Model First para este caso usaremos la primera, Code Firs como su nombre lo indica significa que primero programamos y luego usamos EF para construir la base de datos.
Para este ejemplo usaremos Visual Studio 2019 y .Net Core 3.1.


Empecemos.

Para este ejemplo utilizaremos dos proyectos, uno como Interfaz y otro como una librería de acceso a datos, esto con el objetivo de que nuestra solución implemente la separación de intereses (separation of concerns).


Creamos los proyectos.

Crearemos dos proyectos, para el primero elegimos una aplicación "ASP.Net Core Web Application" que llamaremos "EFFrontEnd" y será de tipo "WebApplication" usando .Net Core 3.1, una vez creada procedemos a crear el otro proyectó, que será una librería, damos clic derecho sobre la solución -> nuevo proyecto y elegimos "Class Library (.Net Standars)" y la nombramos "AccesoADatosLibrary", por ultimo añadimos una referencia a esta desde "EFFrontEnd".


Añadimos Entity Framework.

Para poder usar este framework debemos agregar la librería de clases, así damos clic derecho sobre "AccesoADatosLibrary" -> Manage Nuget Packages y buscamos "Microsoft.EntityFrameworkCore.SqlServer" le damos instalar y comprobamos la versión, para este caso es la "3.1.1".

Creamos el modelo.

En nuestro proyecto "AccesoADatosLibrary" creamos una carpeta llamado "Modelos" y agregamos una clase llamada "Persona" que tendrá como propiedades: "Id", "Nombre", "Correo", y "Direccion", esta ultima a su vez será una clase que tendrá como Propiedades: "Id", "Calle", "Carrera" y "Numero", deben lucir así:


Crear DbContext

Una vez creado el modelo procedemos a crear nuestro "dbContext" esta clase será la puerta de entrada a nuestra base de datos y la que nos permitirá recuperar la información usando Entity Framework.
Creamos una carpeta en el proyecto "AccesoADatosLibrary" llamada "AccesoADatos" y dentro creamos una clase llamada "PersonasContext" que heredara de "DbContext", en el constructor recibirá un objeto "DbContextOptions", invocará el constructor base y como propiedades tendrá un "DbSet" de cada uno de nuestros modelos:


Elegimos la Base de Datos.

Podemos indicarle a Entity Framework que base de datos usar, para esto necesitamos la cadena de conexión (connectionString), la guardaremos en nuestro archivo de configuración "appsettings.json" del proyecto "EFFrontEnd" y la nombraremos "Default":


Configuramos el servicio.

Para poder usar el "DbContext" debe poder inyectarse cuando lo necesitemos, vamos a la clase "Startup" y en el método "ConfigureServices" agregamos la clase "PersonasContext" al servicio y le indicamos cual cadena de conexión usar:


Migración.

Ahora que hemos definido los elementos con los que vamos a trabajar necesitamos hacer la migración, es decir ejecutar los comandos para la creación de la base de datos, para esto necesitamos primero añadir el paquete "Microsoft.EntityFrameworkCore.Tools" desde Nuget Packages en nuestro proyecto front end, para mi caso instalo la versión 3.1.1, al momento la mas reciente.
Una vez instalado abrimos la consola de gestión de paquetes "Package Manager Console"  y agregamos el comando: "Add-Migration CreacionIncialDB" que indica que cree una migración con el nombre "CreacionIncialDB" pero nos cercioramos que el proyecto por defecto de la consola sea "AccesoADatosLibrary" de lo contrario nos arrojará error.
Entity Framework ha creado una carpeta con los archivos de migración, ahora necesitamos ejecutarlos y para esto ejecutamos "Update-Database", cuando termine podremos ver como las tablas de la base de datos han sido creado, ahora podemos hacer consultas sobre la base de datos.


Hacer Consultas.

Para acceder a nuestra base de datos mostraré un ejemplo donde guardamos y recuperáramos información, en la clase "Index" de la carpeta "Pages" de la aplicación web inyectamos el dbContext como parámetro en el constructor luego hacemos un llamado a los métodos "CrearRersonas" y "RecuperarPersonas":


Podemos ver como para crear las personas primero verificamos que la tabla este vacía en la base de datos, luego creamos dos objetos personas con sus respectivas direcciones, los agregamos al objeto "context" y  llamamos "SaveChanges" que hace la escritura en la base de datos.
Para recuperar datos simplemente le decimos al context que nos recupere las personas y que estas incluyan las direcciones, y los retorne como una lista.
Podemos ver que no tuvimos que usar comandos SQL, Entiey Framework se encarga de transformar nuestro codigo auntomaticamente a sentencias SQL usando nuestros modelos.

Comentarios

Entradas más populares de este blog

Ocelot Gateway y microservicios con .Net Core

Microservicios es una de las arquitecturas más usadas para grandes aplicaciones hoy en día, una vez el proyecto ha alcanzado un tamaño considerable debemos sopesar si lo mejor es dividir este en módulos de tal forma que cada uno de estos tenga una tarea independiente y un grupo de métodos propios, de esta forma facilitamos el mantenimiento, el rendimiento, la escalabilidad y podemos dividir nuestros grupos de desarrollo de tal forma que cada cual pueda enfocarse en una tarea en particular. Los Microservicios al final vendría siendo una colección de APIs cada una lo mas independiente posible de la otra, cada una con sus tareas, cada una con su propia base de datos, Ocelot Gateway nos permite agrupar todas estas APIs en una (o las que necesitemos) puertas de entrada, de tal forma que expongamos un solo conjunto de APIs a los clientes y no varias regadas a través de los diferentes microservicios. Empecemos. En este ejemplo construiremos una API y adicionaremos Ocelot Gateway para ...

Blazor en .Net Core, C# para front end.

Microsoft ha liberado recientemente una de sus nuevas herramientas de programación, esta es blazor, esta herramienta nos permite crear aplicaciones web usando C# en vez de javascript!!, de tal forma nuestra aplicacion es programada tanto en el Front End como en el Back End con C#, en potencia es una gran ayuda ya que nos liberaría de tener que usar un lenguaje aparte para la interfaz gráfica como lo es javascript (con sus diferentes frameworks) que es todo un stack de desarrollo. Estuve dando un vistazo a esta herramienta y quiero compartirles como fue mi experiencia, para este ejemplo he utilizado visual studio community edition 2019, la versión con nos permite trabajar con las ultimas características de .Net core. Empecemos. Primero por supuesto creamos el proyecto y elegimos Nuevo proyecto -> "Blazor App", elegimos un nombre para la aplicación, lo mismo para la solución y damos clic en crear, luego hay una lista con el tipo de proyecto Blazor que queremos crear,...