public override bool Modificar(Recibos recibo) { bool paso = false; Repositorio <Recibos> repo = new Repositorio <Recibos>(); try { var recibos = repo.Buscar(recibo.ReciboId); Repositorio <Efectivos> repositorio = new Repositorio <Efectivos>(); Repositorio <Articulos> repoA = new Repositorio <Articulos>(); _contexto = new Contexto(); // Contexto contexto = new Contexto(); if (recibos != null) { var reciboanterior = _contexto.recibosdetalles.Where(x => x.ReciboId == recibo.ReciboId).AsNoTracking().ToList(); foreach (var item in reciboanterior) { //var art = _contexto.articulos.Where(x => x.ArticuloId == item.ArticuloId).AsNoTracking().ToList(); foreach (var item2 in repoA.GetList(x => x.ArticuloId == item.ArticuloId)) { _contexto.articulos.Find(item.ArticuloId).Inventario -= item.Cantidad; //contexto.SaveChanges(); } _contexto.Entry(item).State = System.Data.Entity.EntityState.Deleted; } foreach (var item in recibo.Detalle) { //var art = _contexto.articulos.Where(x => x.ArticuloId == item.ArticuloId).AsNoTracking().ToList(); foreach (var item2 in repoA.GetList(x => x.ArticuloId == item.ArticuloId)) { _contexto.articulos.Find(item.ArticuloId).Inventario += item.Cantidad; //contexto.SaveChanges(); } //var estado = item.ID > 0 ? EntityState : EntityState.Added; _contexto.Entry(item).State = EntityState.Added; } Recibos EntradaAnterior = repo.Buscar(recibo.ReciboId); //identificar la diferencia ya sea restada o sumada decimal diferencia; diferencia = EntradaAnterior.MontoTotal - recibo.MontoTotal; //aplicar diferencia al inventario Efectivos efectivos = repositorio.Buscar(recibo.EfectivoId); efectivos.EfectivoCapital += diferencia; repositorio.Modificar(efectivos); _contexto.Entry(recibo).State = EntityState.Modified; } if (_contexto.SaveChanges() > 0) { paso = true; } _contexto.Dispose(); } catch (Exception) { throw; } return(paso); }