Entity Framework (EF) es un marco de trabajo de mapeo objeto-relacional (ORM) para .NET que permite a los desarrolladores trabajar con una base de datos utilizando objetos .NET. Simplifica el acceso a datos y permite a los desarrolladores centrarse en la lógica de la aplicación en lugar de en el acceso a datos.
Contenido
- ¿Qué es Entity Framework?
- Instalación y Configuración
- Modelos de Datos
- Operaciones CRUD
- Consultas Avanzadas
- Migraciones
- Ejercicios Prácticos
- ¿Qué es Entity Framework?
Entity Framework es una herramienta ORM que permite a los desarrolladores interactuar con bases de datos relacionales utilizando objetos .NET. Proporciona una abstracción de alto nivel sobre el acceso a datos, lo que facilita la manipulación de datos sin necesidad de escribir SQL.
Ventajas de Entity Framework
- Productividad: Reduce la cantidad de código necesario para acceder a los datos.
- Mantenimiento: Facilita el mantenimiento del código al trabajar con objetos en lugar de consultas SQL.
- Portabilidad: Permite cambiar de base de datos sin modificar el código de acceso a datos.
- Instalación y Configuración
Para utilizar Entity Framework en tu proyecto, primero necesitas instalar el paquete NuGet correspondiente.
Instalación
- Abre tu proyecto en Visual Studio.
- Abre la consola del Administrador de Paquetes NuGet desde
Herramientas > Administrador de Paquetes NuGet > Consola del Administrador de Paquetes
. - Ejecuta el siguiente comando para instalar Entity Framework Core:
Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Tools
Configuración
Configura el contexto de datos y las entidades en tu proyecto.
Ejemplo de Contexto de Datos
using Microsoft.EntityFrameworkCore; public class ApplicationDbContext : DbContext { public DbSet<Student> Students { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("YourConnectionStringHere"); } }
Ejemplo de Entidad
public class Student { public int Id { get; set; } public string Name { get; set; } public DateTime EnrollmentDate { get; set; } }
- Modelos de Datos
Entity Framework permite tres enfoques principales para definir el modelo de datos:
- Code First: Define el modelo utilizando clases C# y genera la base de datos a partir de estas clases.
- Database First: Genera el modelo a partir de una base de datos existente.
- Model First: Diseña el modelo utilizando un diseñador visual y genera la base de datos y las clases a partir de este modelo.
Ejemplo de Code First
public class Course { public int CourseId { get; set; } public string Title { get; set; } public int Credits { get; set; } }
- Operaciones CRUD
Crear
using (var context = new ApplicationDbContext()) { var student = new Student { Name = "John Doe", EnrollmentDate = DateTime.Now }; context.Students.Add(student); context.SaveChanges(); }
Leer
Actualizar
using (var context = new ApplicationDbContext()) { var student = context.Students.First(); student.Name = "Jane Doe"; context.SaveChanges(); }
Eliminar
using (var context = new ApplicationDbContext()) { var student = context.Students.First(); context.Students.Remove(student); context.SaveChanges(); }
- Consultas Avanzadas
Entity Framework permite realizar consultas avanzadas utilizando LINQ.
Ejemplo de Consulta Avanzada
using (var context = new ApplicationDbContext()) { var students = context.Students .Where(s => s.EnrollmentDate.Year == 2023) .OrderBy(s => s.Name) .ToList(); }
- Migraciones
Las migraciones permiten actualizar la base de datos para que coincida con el modelo de datos.
Crear una Migración
- Abre la consola del Administrador de Paquetes NuGet.
- Ejecuta el siguiente comando:
Aplicar la Migración
- Ejercicios Prácticos
Ejercicio 1: Crear una Entidad y Realizar Operaciones CRUD
- Crea una entidad
Course
con las propiedadesCourseId
,Title
yCredits
. - Configura el contexto de datos para incluir la entidad
Course
. - Realiza operaciones CRUD (Crear, Leer, Actualizar, Eliminar) con la entidad
Course
.
Solución
// Entidad Course public class Course { public int CourseId { get; set; } public string Title { get; set; } public int Credits { get; set; } } // Contexto de Datos public class ApplicationDbContext : DbContext { public DbSet<Course> Courses { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("YourConnectionStringHere"); } } // Operaciones CRUD using (var context = new ApplicationDbContext()) { // Crear var course = new Course { Title = "Mathematics", Credits = 3 }; context.Courses.Add(course); context.SaveChanges(); // Leer var courses = context.Courses.ToList(); // Actualizar var firstCourse = context.Courses.First(); firstCourse.Title = "Advanced Mathematics"; context.SaveChanges(); // Eliminar var courseToDelete = context.Courses.First(); context.Courses.Remove(courseToDelete); context.SaveChanges(); }
Conclusión
En esta sección, hemos aprendido los conceptos básicos de Entity Framework, cómo instalarlo y configurarlo, y cómo realizar operaciones CRUD. También hemos explorado consultas avanzadas y migraciones. Con estos conocimientos, estás preparado para trabajar con bases de datos en tus aplicaciones .NET de manera eficiente y efectiva. En el siguiente módulo, profundizaremos en la programación asíncrona en C#.
Curso de Programación en C#
Módulo 1: Introducción a C#
- Introducción a C#
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Estructuras de Control
Módulo 3: Programación Orientada a Objetos
- Clases y Objetos
- Métodos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Conceptos Avanzados de C#
- Interfaces
- Delegados y Eventos
- Genéricos
- Colecciones
- LINQ (Consulta Integrada en el Lenguaje)
- Programación Asíncrona
Módulo 5: Trabajando con Datos
Módulo 6: Temas Avanzados
- Reflexión
- Atributos
- Programación Dinámica
- Gestión de Memoria y Recolección de Basura
- Multihilo y Programación Paralela
Módulo 7: Construcción de Aplicaciones
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Estándares de Codificación y Mejores Prácticas
- Patrones de Diseño
- Pruebas Unitarias
- Revisión y Refactorización de Código