DbContext
¿Qué es DbContext?
DbContext
es una clase central en Entity Framework que representa la sesión con la base de datos, permitiendo realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en las entidades.
Características Clave de DbContext:
Gestión de Entidades: Permite realizar operaciones sobre las entidades y administrar su ciclo de vida.
Seguimiento de Cambios: Realiza seguimiento de los cambios en las entidades para reflejarlos en la base de datos.
Consulta de Datos: Facilita la realización de consultas utilizando LINQ.
Caché de Primer Nivel: Mejora el rendimiento mediante el almacenamiento en caché de entidades ya recuperadas.
Configuración de Modelos y Relaciones: Se configura utilizando Data Annotations para definir esquemas, relaciones, restricciones, etc.
Uso de Data Annotations para Definir Relaciones y Propiedades:
Ejemplo de Clases de Entidad con Data Annotations:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
public class Estudiante
{
[Key]
public int EstudianteId { get; set; }
[Required, StringLength(100)]
public string Nombre { get; set; }
// Relación Uno-a-Muchos con la clase Curso
public ICollection<Curso> Cursos { get; set; }
}
public class Curso
{
[Key]
public int CursoId { get; set; }
[Required, StringLength(100)]
public string Nombre { get; set; }
// Clave foránea para la relación con Estudiante
[ForeignKey("Estudiante")]
public int EstudianteId { get; set; }
// Propiedad de navegación
public Estudiante Estudiante { get; set; }
}
Ejemplo de DbContext:
public class MiContexto : DbContext
{
public DbSet<Estudiante> Estudiantes { get; set; }
public DbSet<Curso> Cursos { get; set; }
// Incluye otros DbSets para tus modelos
}
Conectar la base de datos al Context
En Program
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<MiAlmacenContext>(options =>
options.UseSqlServer(connectionString));
"DefaultConnection": "Data Source=NOMBRESERVIDOR;Initial Catalog=NOMBREBASEDATOS;Integrated Security=True"
}
Última actualización