EF Core 7 - Os novos recursos ExecuteDelete e ExecuteUpdate - II
Vmos continuar a apresentar os novos recursos do EF Core 7 focando agora no método ExecuteUpdate usado para atualizar uma grande quantidade de dados. |
Continuando o artigo anterior vamos mostar agora como usar o método ExecuteUpdate.
Os métodos ExecuteUpdate e ExecuteUpdateAsync se comportam de maneira muito semelhante aos métodos ExecuteDelete. A principal diferença é que uma atualização requer saber quais propriedades atualizar e como atualizá-las. Isso é obtido usando uma ou mais chamadas para o método SetProperty.
Assim da mesma
forma que para excluir para atualizar primeiro temos que filtrar as entidades
que desejamos atualizar e a seguir invocar o método
ExecuteUpdate.
Entretanto, às vezes é útil executar comandos de atualização ou exclusão
no banco de dados sem envolver o rastreador de alterações.
Além disso para atualizar entidades, precisamos usar o novo método SetProperty.
A sintaxe usada é a seguinte:
|
O primeiro argumento de SetProperty seleciona a propriedade que deve ser atualizada por meio de um lambda, e o segundo argumento é o novo valor dessa propriedade também usando um lambda. Neste código estamos obtendo o valor existente e acrescentando "Destaque!".
Vamos aproveitar o projeto criado no artigo anterior e vamos atualizar a propriedade Nome do cliente definindo como condição que isso será feito para clientes cujo ClienteId for menor ou igual a 900.
using (var context = new AppDbContext()) { var registros = context.Clientes.Count(); Console.WriteLine($"\nExistem {registros} de clientes na tabela\n"); Console.WriteLine("\nAtualizando nomes dos Clientes..."); var clientesAtualizados = context.Clientes Console.WriteLine($"\n{clientesAtualizados} clientes foram excluidos da tabela...");
|
Executando o código teremos o seguinte resultado.
Se consultarmos a tabela Clientes veremos o nome alterado:
Para poder atualizar mais de uma propriedade podemos definir na consulta após o filtro a invocação do método SetProperty mais de uma vez.
Como exemplo vamos atualizar o nome e o email dos clientes para isso vamos definir dois SetProperty:
var clientesAtualizados = context.Clientes.Where(p => p.ClienteId <= 900)O código usado para realizar a atualização é o seguinte:
using (var context = new AppDbContext()) { var registros = context.Clientes.Count(); Console.WriteLine($"\nExistem {registros} de clientes na tabela\n"); Console.WriteLine("\nAtualizando nomes dos Clientes..."); var clientesAtualizados = context.Clientes Console.WriteLine($"\n{clientesAtualizados} clientes foram atualizados na tabela..."); |
Executando iremos obter o resultado :
Da mesma form que ExecuteDelete podemos obter o número de linhas afetadas.
E estamos conversados...
Pegue o projeto aqui : EF7ExecuteDeleteUpdate,zip
"Porque todos
pecaram e destituídos estão da glória de Deus;
Sendo justificados gratuitamente pela sua graça, pela redenção que há em
Cristo Jesus."
Romanos 3:23,24
Referências: