Guía para implementar Database First con Entity Framework Core en .NET desde Azure

Guía para implementar Database First con Entity Framework Core en .NET desde Azure

Descubre cómo migrar y sincronizar tus bases de datos existentes hacia proyectos .NET utilizando Azure.

Introducción

En este post, exploraremos cómo Azure facilita la migración de una base de datos existente hacia un proyecto .NET, utilizando el enfoque Database First. Este método no solo optimiza nuestros recursos sino que también abre nuevas posibilidades de escalabilidad y gestión.

¿Qué es este servicio?

El servicio central en este proceso es Azure SQL Database, una solución de base de datos como servicio (DBaaS) que permite la gestión de bases de datos SQL en la nube de Azure.

Este servicio ofrece escalabilidad, alta disponibilidad y seguridad, permitiendo a los desarrolladores concentrarse en la lógica de aplicación sin preocuparse por la administración de la infraestructura de base de datos.

¿Qué cubrirá este post?

  • Introducción a Azure SQL Database: cómo configurar y utilizar este servicio.

  • Migración Database First: pasos para importar una base de datos existente a Azure SQL.

  • Integración con proyectos .NET: cómo vincular tu base de datos Azure SQL con un proyecto .NET utilizando Entity Framework Core.

¿Por qué es importante para los arquitectos de soluciones?

En el contexto de Entity Framework Core (EF Core), el término "Database First" se refiere a un enfoque de desarrollo de software donde primero se crea y define la base de datos, y posteriormente se genera el modelo de datos en el código a partir de esta base de datos existente.

Este enfoque es uno de los tres métodos principales para trabajar con Entity Framework, siendo los otros dos "Code First" y "Model First".

¿Qué problemas puede resolver?

Este enfoque resuelve varios problemas clave:

  1. Gestión de recursos: Automatiza la gestión de la infraestructura, permitiendo a los arquitectos centrarse en el desarrollo de aplicaciones.

  2. Escalabilidad: Facilita la escalabilidad automática según la demanda, sin necesidad de intervención manual.

  3. Seguridad: Proporciona robustas características de seguridad que protegen contra amenazas y vulnerabilidades comunes.

  4. Compatibilidad con sistemas legados: Permite la integración fluida de bases de datos antiguas con nuevas aplicaciones en la nube.

Ejercicio en Práctica

  1. Vamos al Portal de azure y buscamos el recurso "SQL Database"

  1. Llenamos el formulario con la siguiente infomación.

  1. Luego en la pestaña Redes, habilitamos la ip de nuestra maquina.

  1. Verificamos nuestra información y creamos la base de datos.

  1. Verificamos que nuestra Base de datos ya esta creada.

  2. Ahora bien tenemos la siguiente estructura de carpetas en nuestro proyecto en .net, como ves las carpetas estan vacias.

  1. Ahora ejecutamos el siguiente codigo para hacer la transformacion de las tablas de la base de datos existentes hacia el proyecto.
dotnet ef dbcontext scaffold "Server=tcp:serverdesignlabs.database.windows.net,1433;Initial Catalog=bddesignlabs;Persist Security Info=False;User ID=AdminJesus;Password=yourpassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
Microsoft.EntityFrameworkCore.SqlServer 
-s Microservicio1.Api 
-p Microservicio1.Repository 
--context DesignlabsContext 
--context-dir Data 
--output-dir Entities
  • dotnet ef dbcontext scaffold: Este es el comando principal que indica que vas a generar las clases del modelo y el contexto de base de datos a partir de la estructura de una base de datos existente.

  • "Server=...;Password=...;Connection Timeout=30;": Esta es la cadena de conexión a la base de datos. Incluye detalles como el servidor, la base de datos, las credenciales del usuario y otros parámetros necesarios para la conexión.

  • Microsoft.EntityFrameworkCore.SqlServer: Especifica el proveedor de base de datos que Entity Framework Core debe usar. En este caso, es SQL Server.

  • -s Microservicio1.Api: El parámetro -s (o --startup-project) especifica el proyecto de inicio que contiene la configuración para la aplicación. Este es el proyecto donde se ejecutará EF Core, generalmente donde se encuentra el punto de entrada de la aplicación.

  • -p Microservicio1.Repository: El parámetro -p (o --project) indica el proyecto donde se generarán los archivos del modelo y el contexto. Esto es útil cuando tu solución contiene múltiples proyectos y quieres colocar el modelo de datos en un proyecto específico.

  • --context DesignlabsContext: Este parámetro define el nombre del contexto de la base de datos que se generará. El contexto es una clase que hereda de DbContext y representa una sesión con la base de datos, permitiendo realizar operaciones como consultas y guardado de datos.

  • --context-dir Data: Indica el directorio dentro del proyecto especificado con -p donde se colocará el archivo del contexto de base de datos.

  • --output-dir Entities: Define el directorio donde se generarán las clases de entidad. Las entidades son clases que representan tablas en la base de datos.

  1. Para que funcione el comando, debemos en nuestro proyecto inicio instalar el siguiente paquete.

  1. Esta sera la salida al ejecutar el comando.

  1. Revisamos que los siguientes archivos fueron creados.

  1. Vemos la entidad Users que fue creada.

  1. Vemos que la entidad Productos fue creada.

  1. Vemos que la clase context tambien fue creada.

Consideraciones finales

Migrar bases de datos existentes a Azure usando el enfoque Database First es una estrategia poderosa que puede transformar la manera en que tu organización maneja los datos y despliega aplicaciones.

Al adoptar Azure SQL Database, los arquitectos de soluciones en Azure no solo mejoran la eficiencia y la seguridad de sus aplicaciones, sino que también abren la puerta a nuevas posibilidades de innovación y crecimiento.