image

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?

  1. Ferramenta Visual Studio
  2. Linguagem C#
  3. Comunicação com o banco de dados Entity Framework
  4. Banco de dados Sql Server
  5. 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.