none
somar coluna entity RRS feed

  • Pergunta

  • Boa tarde pessoal..., 

     Estou com uma situação...

     Preciso somar a quantidade de alguns itens..., fiz a expressão abaixo, não sei se esta correto, são ids diferentes... preciso agrupa-los para soma-los.

     var resultado = from p in ctx.valores
                                        group p by p.idProduto into g
                                        select new { idProduto = g.Key, estoqueProduto = g.Sum(p => p.quantidadeProduto)}; 

    agora preciso guardar esse valor em uma tabela, preciso colocar o resultado da soma no campo estoqueProduto .., ai como faço?

      var t = new estoque
                        {
                            idProduto = z.idProduto,
                            estoqueProduto = ??? ,
                            
    
                        };
                        ctx.AddToestoque(t);

    segunda-feira, 16 de julho de 2012 20:29

Todas as Respostas

  • Olá Marcos,

    Vc vai precisar de algo como o código abaixo:

    var resultado = from p in ctx.valores
                    where p.idProduto = suaVariavel
                    group p by p.idProduto into g
                    select new { idProduto = g.Key, estoqueProduto = g.Sum(s => s.quantidadeProduto)}; 
    var quantidadeProduto = resultado.First().estoqueProduto;
    using (SeuContexto contexto = new SeuContext())
    {
    	var t = new estoque {  
                            idProduto = z.idProduto,
                            estoqueProduto = quantidadeProduto
    		    };
            ctx.AddToestoque(t);
            contexto.SaveChanges();
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    segunda-feira, 16 de julho de 2012 20:44
    Moderador
  • Bom dia Fernando...., 

    O estoqueProduto me volta o q? uma lista ou um int?.... Caso não haja nenhum registro ele irá me voltar um erro.. correto?, quero fazer um if, caso não tenha valores ele atribui zero a quantidadeProduto.. 

     

    terça-feira, 17 de julho de 2012 13:00
  • Olá Marcos,

    Então seu IF nesse caso pode mudar a estrutura para algo como:

    var resultado = from p in ctx.valores
                    where p.idProduto = suaVariavel
                    group p by p.idProduto into g
                    select new { idProduto = g.Key, estoqueProduto = g.Sum(s => s.quantidadeProduto)}; 
    int quantidadeProduto = 0;
    if (resultado.Count() > 0)
     quantidadeProduto = resultado.First().estoqueProduto;
    else
     quantidadeProduto = 0;
    using (SeuContexto contexto = new SeuContext())
    {
    	var t = new estoque {  
                            idProduto = z.idProduto,
                            estoqueProduto = quantidadeProduto
    		    };
            ctx.AddToestoque(t);
            contexto.SaveChanges();
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 17 de julho de 2012 13:32
    Moderador
  • Esta dando um erro...

    {"Erro ao iniciar uma transação na conexão do provedor. Consulte a exceção interna para obter detalhes."}

    terça-feira, 17 de julho de 2012 13:58
  • Olá Marcos,

    Debug a aplicação e verifique o valor da propriedade InnerException da mensagem de erro. Lá estarão os detalhes sobre a sua mensagem de erro.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 17 de julho de 2012 13:59
    Moderador
  • O que seria esse identificador?

    Ocorreu um erro no nível de transporte durante o recebimento de resultados do servidor. (provider: Shared Memory Provider, error: 0 - Identificador inválido.)

    terça-feira, 17 de julho de 2012 14:11
  • No código que vc me envio o "suaVariavel" (no where), eu posso utilizar a combo que seleciona o produto ....

     idProd = Convert.ToInt32(DDLProduto.SelectedItem.Value);
    e no lugar da variável eu coloco idProd..., assim ele agrupara o produto que eu selecionar.....

    terça-feira, 17 de julho de 2012 14:15
  • Olá Marcos,

    Sim, esse é o ideal realmente. Utilizar essa variável para agrupar os dados.

    Com relação ao outro erro, não tenho certeza sobre a origem dele. Essa parte onde fala sobre um Identificador Errado não faz mto sentido. O nome de alguma coluna foi alterada e não mapeada para o modelo do Entity Framework?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 17 de julho de 2012 14:22
    Moderador
  • Estou olhando isso.... no debug não identifiquei o erro..... mas acredito que seja por este caminho
    terça-feira, 17 de julho de 2012 14:24
  • Fernando, consegui resolver... só que o var resultado..., sempre volta o valor 0.... independente de quantos itens exista na tabela
    terça-feira, 17 de julho de 2012 14:56
  • O valor da variável "idProd" que vc esta passando para a consulta existe na tabela?

    Para testar, remova a clausula WHERE e tente retornar todos os resultados.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 17 de julho de 2012 15:00
    Moderador
  • existe sim, acho que o problema e no var resultado ... após ser executado ele retorna null....no  debug... o quantidadeProduto recebe 0....
    terça-feira, 17 de julho de 2012 15:12
  • Fernando, ontem após dar uma olhada no forum vi o GridViewHelper..., se encaixa no que quero fazer, só que não sei como usa-lo, mesmo depois de entrar no site do agrinei..... 

    Vc já utilizou essa classe?

    quarta-feira, 18 de julho de 2012 13:51
  • Olá Marcos,

    Nunca utilizei. Qual recurso dessa classe lhe ajudaria?

    A questão da atualização dos registros vc conseguiu resolver?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 18 de julho de 2012 14:05
    Moderador
  • Olá Marcos,

    Alguma evolução nessa thread?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 26 de julho de 2012 17:50
    Moderador