Atualização em Massa

6 minuto(s) de leitura - April 25, 2023

01


Nesse post apresento melhorias de mais novidades do EF Core 7

EF CORE 7 Atualização e Exclusão em Massa com Eficiência

O EF Core 7 introduziu novos métodos, ExecuteDelete e ExecuteUpdate, para otimizar a atualização e exclusão de grandes volumes de dados no banco de dados. Estes métodos oferecem uma alternativa mais eficiente ao uso tradicional do SaveChanges para grandes conjuntos de dados.

ExecuteDelete

O método ExecuteDelete remove um conjunto de entidades de acordo com um predicado especificado. Esse predicado define quais entidades devem ser excluídas, similarmente à cláusula WHERE em uma consulta SQL.

Exemplo de uso:

using (var context = new RalmsContext())
{
    var ordersToDelete = context.Orders.Where(o => o.OrderDate < new DateTime(2023, 1, 1));
    context.Database.ExecuteDelete(ordersToDelete);
}

ExecuteUpdate

O método ExecuteUpdate atualiza as propriedades de um conjunto de entidades de acordo com os valores especificados. Similarmente ao ExecuteDelete, utiliza-se um predicado para definir quais entidades serão atualizadas.

Exemplo de uso:

using (var context = new RalmsContext())
{
    var ordersToUpdate = context.Orders.Where(o => o.OrderStatus == OrderStatus.Pending);
    context.Database.ExecuteUpdate(ordersToUpdate, o => new { o.OrderStatus = OrderStatus.Shipped });
}

Vantagens

Eficiência: ExecuteDelete e ExecuteUpdate executam comandos SQL únicos e otimizados, resultando em um desempenho significativamente melhor para grandes conjuntos de dados. Flexibilidade: Os predicados permitem definir com precisão quais entidades devem ser atualizadas ou excluídas. Transações: A utilização de transações é compatível com os métodos, garantindo a integridade dos dados em caso de falhas.

Considerações

Rastreamento de entidades que ao contrário do SaveChanges, os métodos não rastreiam o estado das entidades no contexto.

Consultas Subsequentas: As alterações realizadas com ExecuteDelete e ExecuteUpdate não são automaticamente refletidas no contexto, portanto, consultas subsequentes podem precisar ser recarregadas.

Segurança: O predicado deve ser cuidadosamente escrito para evitar exclusões ou atualizações indesejadas.

Contatos

Fico por aqui, mas pode me contatar por meio de minhas redes sociais 😄
twitter: @ralmsdeveloper
linkedin: @ralmsdeveloper

Deixe um comentário