Code First en Entity Framework Core

En este post vamos a ver cómo tratar el enfoque code first en Entity framework core. Para aquellos de ustedes que no estén familiarizados con Entity Framework, se trata de un marco de trabajo de Microsoft que facilita la creación de aplicaciones de bases de datos como vimos en uno de los posts anteriores

 

 

1 - Qué es Code first en Entity Framework Core?

El enfoque code first en Entity Framework core significa que se diseñan y se programan las clases de nuestro modelo de datos en código, y luego Entity Framework Core crea la base de datos, o las tablas correspondientes a partir de dichas clases.

 

Para este post, vamos a ver la misma estructura que vimos en el post anterior sobre database first. Además, no olvides que todo el código está disponible en GitHub.

 

 

2 - Implementar code First con entity framework Core

Lo primero que tenemos que hacer es crear una clase para cada tabla de nuestra base de datos. 

En este caso creamos las dos entidades que necesitamos:

public class User
{
    public int Id { get; set; }
    public string UserName { get; set; }
    
}


public class Wokringexperience
{
    public int Id { get; set; }

    public int UserId { get; set; }

    [MaxLength(50)]
    public string Name { get; set; }
    
    public string Details { get; set; }

    public string Environment { get; set; }

    public DateTime? StartDate { get; set; }

    public DateTime? EndDate { get; set; }
}

Como puedes ver puedes incluir anotaciones en las propiedades, en este caso un límite en la base de datos de 50 caracteres en la columna name. 

 

Ahora, antes de continuar instalamos Microsoft.EntityFrameworkCore.Design y el paquete de mysql porque mi base de datos es MySQL, si tienes SqlServer o una diferente, este segundo paquete es diferente.

 

A continuación creamos la clase que hereda de DbContext y que define la instancia de la base de datos, así como las tablas que contiene.

public class CursoEfContext : DbContext
{
    public virtual DbSet<User> Users { get; set; }

    public virtual DbSet<Wokringexperience> Wokringexperiences { get; set; }
    
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
        => optionsBuilder.UseMySQL("server=127.0.0.1;port=4306;database=cursoEF;user=root;password=cursoEFpass");
}

Como puedes ver, en el DbContext hemos configurado tanto las tablas como la conexión a la base de datos, aunque esa parte, se puede hacer en el startup, pero por simplicidad la dejamos aquí.

 

 

Una vez tenemos todo configurado, pasamos a crear la base de datos. Tenemos varias opciones, pero a mi me gusta que se ejecute todo al ejecutar el programa. Lo que quiere decir que si la base de datos no existe, se creará.

using (var scope = app.Services.CreateScope())
{
    CursoEfContext context = scope.ServiceProvider.GetRequiredService<CursoEfContext>();
    context.Database.EnsureCreated();
}

Y este es el resultado de ejecutar el código:

ejecucion code first ef core

 

Como podemos ver, la columna name tiene el varchar con el límite en 50 caracteres, como hemos especificado con las anotaciones. 

 

EnsureCreated está diseñado para montar la base de datos de una forma muy rápida, por ejemplo cuando estás creando la primera implementación de un proyecto. Por ahora lo vamos a dejar así, pero cuando veamos migraciones, cambiaremos el código un poco.

 

Lo que hacemos con EnsureCreated es asegurarnos que la base de datos existe y tiene tablas, si no tiene tablas se ejecuta con el modelo de entity framework que tienes definido, pero si tiene tablas, aunque no sean las mismas que tienes en el modelo, nada se ejecutará.

  • NOTA: Puedes ahorrarte esta configuración si quieres ejecutar la configuración inicial o las migraciones en la línea de comandos

 

Vamos a dejar este post aquí y en el siguiente veremos migraciones (migrations en inglés), que es la forma más común de implementar code first en .NET, pero he querido hacer este post de una forma separada para que se entienda el concepto de lo que es code first. 

 

Conclusión

Con Code First vamos a crear primero el modelo de datos en el código y luego Entity Framework crea la base de datos, las tablas y relaciones automáticamente. 

 

Code first es muy popular debido a que es relativamente sencillo de mantener, especialmente en microservicios, es bastante fácil de usar y completo para diseñar bases de datos. 


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café