En este artículo te explicaré cómo puedes hacer ingeniería inversa, es decir que a partir de tu base de datos creada en donde tienes todas tus tablas, relaciones y demás, puedas generar tus clases en C#.
Lo haremos en 4 simples pasos, a continuación te los detallaré 🐿️✌🏼
1. Instalar herramientas
Todo comienza con instalar la herramienta llamada Entity Framework Core Command Line Tool.
Abrir una terminal y ejecutar el siguiente comando:
dotnet tool install --global dotnet-ef
Eso instalará la herramienta de forma global en tu sistema.
En caso que ya la tenías instalada verás algo así:
Antes esta herramienta venía instalada por default, pero ya no, puedes leer sobre esto aquí.
2. Crear un proyecto
Debes crear un proyecto de manera temporal, sólo para poder generar las clases, luego podrás mover esas clases a donde quieras.
Yo eligiré crear un proyecto de tipo Consola y lo llamaré Scaffolder mediante el siguiente comando:
dotnet new console -n Scaffolder
Luego navego hacia la carpeta de mi proyecto con el siguiente comando:
cd Scaffolder
3. Instalar bibliotecas
Necesitarás dos bibliotecas:
- Microsoft.entityframeworkcore.sqlserver
- Microsoft.entityframeworkcore.tools
Eso lo hacemos mediante los siguientes comandos:
dotnet add package Microsoft.entityframeworkcore.sqlserver
dotnet add package Microsoft.entityframeworkcore.tools
4. Ingeniería inversa: Scaffolding
Ahora haremos Scaffolding, y te preguntarás qué es?
Scaffolding es el proceso automatizado de generar código a partir de una fuente existente, generalmente una base de datos. Este proceso produce clases que representan las entidades y el contexto de datos necesarios para interactuar con la base de datos en una aplicación.
Necesitarás confeccionar tu cadena de conexión para hacer el scaffolding, en el caso del ejemplo que tengo mi cadena luce así:
"server=.;database=Library;trusted_connection=true;trust server certificate=true"
Tu tendrás que cambiar el nombre de la base de datos y si no usas credenciales de Windows para SQL Server entonces en lugar de trusted_connection=true tendrás que poner user=TuUsuario;pwd=TuPassword. En muchas ocasiones el usuaro es 'sa'.
Ahora usaremos la cadena de conexión en el siguiente comando:
dotnet ef dbcontext scaffold "server=.;database=Library;trusted_connection=true;trust server certificate=true" microsoft.entityframeworkcore.sqlserver --output-dir Models --context MiDbContext --context-dir Data --no-pluralize
Mi base de datos se llama Library y luce así:
Tras ejecutar el último comando obtengo esto:
Y en la carpeta de mi proyecto los archivos que necesito:
En la carpeta Models tendrás las clases generadas:
Para mostrarte un ejemplo, así luce la tabla Libros:
Y así luce la clase Libros:
using System;
using System.Collections.Generic;
namespace Scaffolder.Models;
public partial class Libros
{
public int IdLibro { get; set; }
public string Titulo { get; set; } = null!;
public string? Resumen { get; set; }
public int NumeroPaginas { get; set; }
public string GeneroLiterario { get; set; } = null!;
public string? Isbn { get; set; }
public virtual ICollection<Comentarios> Comentarios { get; set; } = new List<Comentarios>();
public virtual ICollection<LibroAutor> LibroAutor { get; set; } = new List<LibroAutor>();
}
Sólo ten en cuenta actualizar el namespace generado cuando copies esta clase hacia tu proyecto y listo!
Si esta entrada te ha gustado, considera compartirla genio 🐿️🥳
Créditos de imagen de portada: Foto de Lenny Kuhne en Unsplash