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
Coursecon las propiedadesCourseId,TitleyCredits. - 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
