Sobes.tech
Middle

¿Cómo carga Entity Framework las entidades en la base de datos?

sobes.tech AI

Respuesta de la IA

Entity Framework carga entidades en la base de datos formando consultas SQL de inserción, actualización o eliminación de datos basadas en los cambios rastreados en el contexto de datos, y luego ejecutándolos.

El proceso incluye:

  1. Seguimiento de cambios: DbContext rastrea el estado de cada entidad (Added, Modified, Deleted, Unchanged).
  2. Generación de comandos: Basándose en los cambios rastreados, Entity Framework genera los comandos SQL correspondientes (INSERT, UPDATE, DELETE).
  3. Ejecución de comandos: Los comandos generados se envían a la base de datos y se ejecutan.

Ejemplo de guardar una entidad añadida:

// Crear el contexto de datos
using (var context = new MyDbContext())
{
    // Crear una nueva entidad
    var newUser = new User { Name = "Иван" };

    // Añadir la entidad al contexto
    context.Users.Add(newUser);

    // Guardar cambios en la base de datos
    context.SaveChanges();
}

En este ejemplo, context.SaveChanges() inicia el proceso de carga. EF genera la consulta SQL tipo INSERT INTO Users (Name) VALUES ('Иван'); y la ejecuta en la base de datos.

Al actualizar una entidad:

using (var context = new MyDbContext())
{
    // Obtener la entidad
    var userToUpdate = context.Users.Find(1);

    // Cambiar la propiedad
    userToUpdate.Name = "Петр";

    // Guardar cambios
    context.SaveChanges();
}

Aquí, SaveChanges() inicia la generación y ejecución de la consulta SQL UPDATE Users SET Name = 'Петр' WHERE Id = 1;.

Al eliminar una entidad:

using (var context = new MyDbContext())
{
    // Obtener la entidad
    var userToDelete = context.Users.Find(2);

    // Eliminar la entidad del contexto
    context.Users.Remove(userToDelete);

    // Guardar cambios
    context.SaveChanges();
}

SaveChanges() en este caso generará y ejecutará la consulta SQL DELETE FROM Users WHERE Id = 2;.

Entity Framework Core también soporta la posibilidad de guardar en lotes (batch saving), donde varias operaciones de INSERT, UPDATE, DELETE se combinan en uno o varios paquetes para una transmisión más eficiente a la base de datos. Esto depende del proveedor de la base de datos y sus capacidades.