Neste artigo veremos como atualizar um único campo de um registro de uma tabela no MySql usando o EF Core. |
Ao atualizar registros com o EntityFramework Core, o
comportamento padrão atualizará todos os campos desse registro no banco de
dados, mesmo que os valores não sejam alterados para alguns campos.
Este artigo mostra como atualizar apenas um campo de um registro de uma tabela.
Para isso vamos usar
o projeto Console que foi criado para acessar o banco de dados MySql neste
artigo:
C# - CRUD com MySQL via console com EF Core
Neste projeto para atualizar os dados de um Cliente usamos o código abaixo:
- Atualizar dados
static void AtualizarDadosMySql() { using (var dbContext = new AppDbContext()) { var cliente = dbContext.Clientes.Where(record => record.Id == 2).FirstOrDefault(); cliente.Nome = "Paulo da Silva"; dbContext.Update(cliente); dbContext.SaveChanges(); } Console.WriteLine("\nDados atualizados...\n"); } |
Aqui estamos atualizando o registro de Id igual a 2.
Atualizando somente um campo
Para atualizar somente um campo podemos simplesmente alterar o código do método acima usado para atualizar um registro.
Podemos também criar um novo método específico para o
campo que desejamos atualizar.
Vamos fazer isso criando o método AtualizaSomenteNomeMySql() para o registro de id igual a 3.
static void
AtualizaSomenteNomeMySql()
|
Vamos alterar o menu de opções para poder selecionar esta opção :
Console.WriteLine("## Conexão com MySql ##");
while (true)
{
Console.Write("\n(L)er e exibir dados");
Console.Write("\n(I)ncluir dados");
Console.Write("\n(A)tualizar dados");
Console.Write("\n(D)eletar dados");
Console.Write("\n(N)Atualiza somente o nome");
Console.Write("\n(S)air\n");
char opcao = Convert.ToChar(Console.ReadLine().ToLower());
if (opcao == 'l')
LerExibirDadosMySql();
else if (opcao == 'i')
IncluirDadosMySql();
else if (opcao == 'a')
AtualizarDadosMySql();
else if (opcao == 'd')
DeletarDadosMySql();
else if (opcao == 'n')
AtualizaSomenteNomeMySql();
else if (opcao == 's')
break;
else
Console.WriteLine("\nOpção inválida");
}
|
Executando o projeto teremos:
Temos assim na tabela clientes no MySql os seguintes dados :
Vamos alterar somente o nome do cliente com id igual a 3 usando a instrução abaixo:
var cliente = new Cliente { Id = 3, Nome= "Augusta", Email="augusta@email.com" };
Selecionando a opção N e a seguir exindo os valores dos registros existentes vamos obter:
Verificando a tabela Clientes no MySQL teremos os seguintes valores :
Note que somente o nome do cliente foi alterado ambora na instrução tenhamos também alterado o email.
Pegue o projeto aqui : EFCore6_MySql2.zip ...
"Disse-lhe Jesus:
Estou há tanto tempo convosco, e não me tendes conhecido, Filipe? Quem me vê a
mim vê o Pai; e como dizes tu: Mostra-nos o Pai? "
João 14:9
Referências: