Olá pessoal meu nome é Mauricio Junior, hoje eu vou falar e mostrar como selecionar um dado do banco de informações, somar um valor e atualizar usando apenas poucas linhas do Entity Framework.
O que estou usando?
- Ferramenta Visual Studio
- Linguagem C#
- Comunicação com o banco de dados Entity Framework
- Banco de dados Sql Server
- Framework .NETCore
Problema
O problema é, eu recebi um valor e preciso selecionar ele. Depois disso eu preciso pegar um determinado campo, somar mais um e atualizar no database.
Solução
Como eu já executo o comando Where passando o Id necessário, basta agora utilizar o Attach para modificar o valor e salvar no database.
Vamos para o código
O método é bem simples e o que preciso é retornar a string de um determinado campo. Veja o código 1.1
Código 1.1 - Seleciona e atualiza
using System;
using System.Collections.Generic;
using System.Linq;
public string GetById(int id)
{
if (id == 0)
return null;
var result = _db.tb_Counter.Where(x => x.CH_COUNTER == id).FirstOrDefault();
result.QTDE_COUNTER += 1;
_db.tb_Counter.Attach(result).Property(x => x.QTDE_COUNTER).IsModified = true;
_db.SaveChanges();
return result.DESC_COUNTER;
}
O primeiro ponto é receber o valor Id e o primeiro ponto é a verificação. Se o Id é igual a 0 então o método precisa retornar null. Depois disso basta fazer um simples Where com o Lambda de x para pegar o primeiro ou o dado padrão.
O resultado do SQL está armazenado na variável chamada "result" e como eu tenho um campo chamado "QTDE_COUNTER" eu preciso pegar ele e somar mais um. Para isso, basta usar o result.QTDE_COUNTER += 1. Existem várias maneiras de somar, eu coloquei aqui a maneira mais simples de entender.
Depois desses passos, preciso fazer a atualização no database com o valor atualizado. Então eu utilizo o Attach acoplando o (result) baseado apenas na propriedade (x => x.QTDE_COUNTER) modificado e depois uso o IsModified = true.
Para salvar basta usar o SaveChanges() e pronto.
O retorno do método é a minha descrição result.DESC_COUNTER que é uma simples string gravada no database.
Espero que tenha ajudado, eu fico por aqui e qualquer dúvida pode entrar em contato pela rede social Instagram @mauriciojunior_net ou pelo site pessoal mauriciojunior.net.