En Framework, la actualización de registros es una de las operaciones CRUD más comunes y frecuentes cuando hagamos una aplicación.
La actualización de registros implica modificar los valores de una entidad que ya existe en la base de datos. Para ello, Entity Framework realiza un seguimiento de los cambios en las entidades que están siendo gestionadas por el contexto (DbContext
).
Cuando llamas al método SaveChanges()
, Entity Framework genera y ejecuta las sentencias SQL necesarias para reflejar los cambios en la base de datos.
Existen varios enfoques principales para actualizar entidades:
- Actualizar un objeto del DbContext
- Usar el método
Update()
Actualizar una entidad del DbContext
La forma más habitual es simplemente actualizar una de las entidades del DbContext
. Por ejemplo,
using (var context = new SchoolContext())
{
var student = context.Students.Find(1); // Busca por clave primaria
if (student != null)
{
student.Name = "Nuevo Nombre"; // Actualizamos el nombre
student.Age = 21; // Actualizamos la edad
context.SaveChanges(); // Guardamos los cambios en la base de datos
}
}
En este ejemplo:
Find(1)
busca al estudiante con clave primaria igual a 1.- Se actualizan las propiedades
Name
yAge
del objetostudent
. SaveChanges()
guarda los cambios realizados en la base de datos.
Actualización de registros con Update
El método Update
es una forma directa de marcar una entidad como modificada.
Cuando se llama a este método, Entity Framework asume que la entidad ha sido alterada y que debe generar una sentencia SQL UPDATE
para sincronizar los cambios en la base de datos.
dbContext.Update(entity);
dbContext.SaveChanges();
Supongamos que tenemos una entidad Producto
con las siguientes propiedades:
public class Producto
{
public int Id { get; set; }
public string Nombre { get; set; }
public decimal Precio { get; set; }
}
Para actualizar un producto existente, primero lo recuperamos de la base de datos, modificamos sus propiedades y luego llamamos al método Update
:
using (var dbContext = new MiDbContext())
{
// Recuperar el producto a actualizar
var producto = dbContext.Productos.Find(1); // Supongamos que el Id es 1
if (producto != null)
{
// Modificar las propiedades
producto.Nombre = "Nuevo Nombre";
producto.Precio = 99.99m;
// Marcar la entidad como modificada
dbContext.Update(producto);
// Guardar los cambios en la base de datos
dbContext.SaveChanges();
}
}
En este ejemplo, Entity Framework generará una sentencia SQL UPDATE
para actualizar el producto con Id = 1
.
Update
marca todas las propiedades de la entidad como modificadas, lo que puede generar una sentencia SQL UPDATE
que incluya todas las columnas, incluso si solo se modificó una.