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.