Sobes.tech
Middle

Como o Entity Framework carrega entidades na base de dados?

sobes.tech IA

Resposta da IA

O Entity Framework carrega entidades na base de dados formando consultas SQL de inserção, atualização ou eliminação de dados com base nas alterações rastreadas no contexto de dados, e depois executando-as.

O processo inclui:

  1. Acompanhamento de alterações: DbContext rastreia o estado de cada entidade (Added, Modified, Deleted, Unchanged).
  2. Geração de comandos: Com base nas alterações rastreadas, o Entity Framework gera os comandos SQL correspondentes (INSERT, UPDATE, DELETE).
  3. Execução de comandos: Os comandos gerados são enviados ao banco de dados e executados.

Exemplo de guardar uma entidade adicionada:

// Criar o contexto de dados
using (var context = new MyDbContext())
{
    // Criar uma nova entidade
    var newUser = new User { Name = "Иван" };

    // Adicionar a entidade ao contexto
    context.Users.Add(newUser);

    // Guardar alterações na base de dados
    context.SaveChanges();
}

Neste exemplo, context.SaveChanges() inicia o processo de carregamento. EF gera a consulta SQL do tipo INSERT INTO Users (Name) VALUES ('Иван'); e executa-a na base de dados.

Ao atualizar uma entidade:

using (var context = new MyDbContext())
{
    // Obter a entidade
    var userToUpdate = context.Users.Find(1);

    // Alterar a propriedade
    userToUpdate.Name = "Петр";

    // Guardar alterações
    context.SaveChanges();
}

Aqui, SaveChanges() inicia a geração e execução da consulta SQL UPDATE Users SET Name = 'Петр' WHERE Id = 1;.

Ao eliminar uma entidade:

using (var context = new MyDbContext())
{
    // Obter a entidade
    var userToDelete = context.Users.Find(2);

    // Eliminar a entidade do contexto
    context.Users.Remove(userToDelete);

    // Guardar alterações
    context.SaveChanges();
}

SaveChanges() neste caso gerará e executará a consulta SQL DELETE FROM Users WHERE Id = 2;.

O Entity Framework Core também suporta a possibilidade de guardar em lotes (batch saving), onde várias operações de INSERT, UPDATE, DELETE são combinadas em um ou vários pacotes para uma transmissão mais eficiente ao banco de dados. Isto depende do provedor de base de dados e das suas capacidades.