Cómo generar Clases a partir de la Base de datos
Utilizamos ingeniería inversa mediante Scaffolding para generar clases a partir de una BD Sql Server 🐯

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *