entity-framework-actualizar-registros

Actualización de datos en Entity Framework

  • 2 min

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 y Age del objeto student.
  • 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.