Linked 0 Denunciar post Postado Fevereiro 14, 2013 Olá Pessoal, Trabalho com ASP.NET MVC 3 e ASP.NET MVC 4 + RAZOR + SQL SERVER. Vou tentar ser o mais objetivo possível para facilitar a interpretação de minha questão. É o seguinte, estou tentando fazer um loop em uma tabela que contém um histórico e assim atualizar algumas de suas propriedades. O problema é que não atualiza. O que eu estaria fazendo de errado? Vejam abaixo o código: var dtSearch = \\ aqui vai uma data qualquer como parâmetro decimal saldoAnt = 100; int ccId = 1; var lista = _db.Historico.Where(a => a.Cc == ccId && (a.DataMov >= dtSearch)).OrderBy(b=> b.Cc).ThenBy(b => b.DataMov).ThenBy(b=>b.Id).ToList(); // Lê e atualiza o movimento foreach (var item in lista) item.SaldoAnt = saldoAnt; item.SaldoAtual = saldoAnt + item.VlrMov; _db.Entry(item).State = EntityState.Modified; saldoAnt = saldoAnt + item.VlrMov; { _db.SaveChanges(); // Atualiza a Cc com o último saldo do loop var cc = _db.CC.First(j => j.Id == ccId); if (cc != null) { cc.SaldoAtual = saldoAnt; // aqui é a variável que deveria estar com o último valor foreach _db.Entry(cc).State = EntityState.Modified; _db.SaveChanges(); } Conto com ajuda dos colegas. Forte abraços Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 18, 2013 Achei um pouco estrano o código, a chave depois do foreach esta antes do _db.SaveChanges, esta certo?Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Linked 0 Denunciar post Postado Fevereiro 18, 2013 Achei um pouco estrano o código, a chave depois do foreach esta antes do _db.SaveChanges, esta certo? Abraços... Bom dia tudo na paz?! Engraçado, não sei porque não apareceu a primeira chave do foreach quando eu copiei para postar minha questão aqui no forum. No meu código tá correto, tá assim: foreach (var item in lista) { ... } _db.SaveChanges(); Mesmo assim obrigado pelo alerta. Tenha uma ótima semana. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Fevereiro 18, 2013 Eu trabalho um puco diferente do que esta fazendo e acho que você pode tentar e ver se funciona.De uma olhada neste artigo: http://www.dotnetcurry.com/ShowArticle.aspx?ID=619 Veja o código da parte Update Objects in Entity Framework 4.0.Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Linked 0 Denunciar post Postado Fevereiro 19, 2013 Eu trabalho um puco diferente do que esta fazendo e acho que você pode tentar e ver se funciona. De uma olhada neste artigo: http://www.dotnetcurry.com/ShowArticle.aspx?ID=619 Veja o código da parte Update Objects in Entity Framework 4.0. Abraços... Legal Quintelab, eu não sabia dessa dica, muito obrigado. Mesmo assim se utilizarmos esse método de atualização que você me indicou, no caso de atualização de vários registros, haveria a necessidade do loop para ler esses registros através do foreach. De qualquer forma, com certeza essa maneira que você trabalha, eu também irei utilizar em alguns casos. Fique na paz Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Resende 0 Denunciar post Postado Maio 2, 2013 Caro amigo, Será que o fluxo adequado não seria [inline] foreach(var item in lista) {// para cada update _db.SaveChanges(); } [/inline] Compartilhar este post Link para o post Compartilhar em outros sites
Linked 0 Denunciar post Postado Maio 2, 2013 Caro amigo, Será que o fluxo adequado não seria [inline] foreach(var item in lista) {// para cada update _db.SaveChanges(); } [/inline] Olá Fernando, obrigado por participar deste post. Acredito que o _db.SaveChanges() não pode estar dentro de um loop, pelo menos é o que outros colegas que desenvolve com as mesmas ferramentas que trabalho, me orientam a não colocar-lo dentro do loop. Compartilhar este post Link para o post Compartilhar em outros sites