Sobes.tech
Junior

¿Qué es Entity Framework?

sobes.tech AI

Respuesta de la IA

Entity Framework (EF) es un acelerador objeto-relacional (ORM) para .NET que permite a los desarrolladores trabajar con bases de datos utilizando objetos .NET en lugar de escribir la mayor parte del código de acceso a datos. Convierte consultas LINQ en SQL y viceversa.

Componentes principales y capacidades:

  • DbContext: Representa una sesión de trabajo con la base de datos, incluye DbSet para entidades.
  • DbSet: Representa una colección de entidades de un tipo específico en el contexto.
  • LINQ to Entities: Permite escribir consultas a la base de datos usando sintaxis LINQ.
  • Migraciones (Code-First Migrations): Permiten gestionar cambios en el esquema de la base de datos a medida que evoluciona el modelo de datos en el código.
  • Seguimiento de cambios: EF rastrea automáticamente los cambios realizados en las entidades cargadas desde la base de datos y genera comandos SQL correspondientes para guardar estos cambios.

Enfoques de desarrollo soportados:

  • Code-First: Definición del modelo de datos en código C# y generación del esquema de la base de datos basado en ello.
  • Database-First: Creación del modelo .NET a partir de una base de datos existente.
  • Model-First: Creación de un modelo gráfico en el diseñador de EF y generación tanto del código como del esquema de la base de datos. (Menos común en EF Core)

Ventajas:

  • Aceleración del desarrollo mediante abstracción de los detalles de implementación del acceso a datos.
  • Tipificación fuerte y verificación en tiempo de compilación.
  • Gestión conveniente del modelo de datos y sus cambios.

Ejemplo de uso de EF Core (paradigma Code-First):

// Definición del modelo de datos
public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

// Definición del contexto de la base de datos
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Ejemplo de configuración para SQLite
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Ejemplo de uso en código
// using (var context = new BloggingContext())
// {
//     // Añadir datos
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Consultar datos
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core es una versión multiplataforma, ligera y extensible de Entity Framework, que se recomienda para nuevas aplicaciones .NET.