none
Error en el savechanges RRS feed

  • Pregunta

  • Hola.

    Estoy recibientdo el siguiente error al hacer el savechanges.  No encuentro filas que se hayan actualizado antes del proceso. 

    Este método funcionaba con un objeto de tipo documento, ahora cambié el objeto que recibe por post, a uno de tipo nota, que tiene dos atributos mas. Es la unica diferencia con la versión que funcionaba.

    La instrucción update, insert o delete de almacenamiento afectó a un número inesperado de filas (0). Es posible que las entidades se hayan modificado o eliminado desde que fueron cargadas. Actualice las entradas de ObjectStateManager.

       public ActionResult Create(Nota documento)
            {
                int accesoValido = AccesoValido();
                bool permisos = false;
                if (accesoValido != 0)
                {
                    permisos = EmpleadoController.PermisosSuficientes(accesoValido, this.ToString(), "Insertar");
                }
    
                if (accesoValido == 0 || permisos == false)
                {
                    ViewBag.Mensaje = "Solo para personal autorizado";
                    return RedirectToAction("../Empleado/login");
                }
    
    
                if (ModelState.IsValid)
                {
                    Empleado e = GetSessionEmpleado();
                    Sucursal sucursal = (from p in db.Sucursal.Include(d => d.PosicionAnteIVA) where p.SucursalID == e.SucursalID select p).First() ;
                    documento.CodSucursal =  e.Sucursal.Numero;
                    documento.CUIT = e.Sucursal.Cuit;
                    documento.DireccionSucursal = e.Sucursal.Direccion;
                    documento.IngresosBrutos = e.Sucursal.IngresosBrutos;
    
                    documento.IVAEmpresa = e.Sucursal.PosicionAnteIVA.Nombre;
                    documento.LocalidadSucursal = e.Sucursal.Localidad;
                    documento.CondicionPagoID = db.Cliente.Find(documento.ClienteId).CondicionPagoID;
                
                    if (((Cliente)db.Cliente.Find(documento.ClienteId)).PosicionAnteIVAId == 1)
                    {
    
    
                        documento.Tipo = "A";
                        documento.IVACliente = "Responsable Inscripto";
    
                        if (documento.TipoDocumentoID == 2) // si es ND
                        {
                            //Calculo  numero de nota
                            NumeracionDocumentos numeracionDocumento = (from p in db.NumeracionDocumentos where p.SucursalID == e.Sucursal.SucursalID && p.TipoDocumento == "NDA" select p).First();
                            numeracionDocumento.UltimoRegistro = numeracionDocumento.UltimoRegistro + 1;
                            db.Entry(numeracionDocumento).State = EntityState.Modified;
    
                            string num = numeracionDocumento.UltimoRegistro.ToString();
                            int cantidadCeros = 8 - num.Length;
                            string resultado = "";
                            for (int i = 0; i < cantidadCeros; i++)
                            {
                                resultado = resultado + "0";
                            }
    
                            //asigno formato
                            documento.Numero = resultado + num;
                        }
                        else // es NC
                        {
    
                            //Calculo  numero nota
                            NumeracionDocumentos numeracionDocumento = (from p in db.NumeracionDocumentos where p.SucursalID == e.Sucursal.SucursalID && p.TipoDocumento == "NCA" select p).First();
                            numeracionDocumento.UltimoRegistro = numeracionDocumento.UltimoRegistro + 1;
                            db.Entry(numeracionDocumento).State = EntityState.Modified;
    
                            string num = numeracionDocumento.UltimoRegistro.ToString();
                            int cantidadCeros = 8 - num.Length;
                            string resultado = "";
                            for (int i = 0; i < cantidadCeros; i++)
                            {
                                resultado = resultado + "0";
                            }
    
                            //asigno formato
                            documento.Numero = resultado + num;
    
    
                        }
                    }
                    else
                    {
                        documento.Tipo = "B";
                        documento.IVACliente = "Consumidor Final";
                        if (documento.TipoDocumentoID == 2) // si es ND
                        {
                            //Calculo  numero de nota
                            NumeracionDocumentos numeracionDocumento = (from p in db.NumeracionDocumentos where p.SucursalID == e.Sucursal.SucursalID && p.TipoDocumento == "NDB" select p).First();
                            numeracionDocumento.UltimoRegistro = numeracionDocumento.UltimoRegistro + 1;
                            db.Entry(numeracionDocumento).State = EntityState.Modified;
    
                            string num = numeracionDocumento.UltimoRegistro.ToString();
                            int cantidadCeros = 8 - num.Length;
                            string resultado = "";
                            for (int i = 0; i < cantidadCeros; i++)
                            {
                                resultado = resultado + "0";
                            }
    
                            //asigno formato
                            documento.Numero = resultado + num;
                        }
                        else // es NC
                        {
    
                            //Calculo  numero nota
                            NumeracionDocumentos numeracionDocumento = (from p in db.NumeracionDocumentos where p.SucursalID == e.Sucursal.SucursalID && p.TipoDocumento == "NCB" select p).First();
                            numeracionDocumento.UltimoRegistro = numeracionDocumento.UltimoRegistro + 1;
                            db.Entry(numeracionDocumento).State = EntityState.Modified;
    
                            string num = numeracionDocumento.UltimoRegistro.ToString();
                            int cantidadCeros = 8 - num.Length;
                            string resultado = "";
                            for (int i = 0; i < cantidadCeros; i++)
                            {
                                resultado = resultado + "0";
                            }
    
                            //asigno formato
                            documento.Numero = resultado + num;
    
    
                        }
                    }
    
                        CuentaCorrienteCliente cc = new CuentaCorrienteCliente();
                        cc.Fecha = DateTime.Now;
                        cc.ClienteID = documento.ClienteId;
                        cc.Sucursal = documento.CodSucursal;
                        cc.NumeroFormulario = documento.Numero;
                        cc.SucursalAplica = documento.CodSucursal;
                        cc.NumeroFormularioAplica = documento.Numero.ToString();
                        cc.TipoFormulario = db.TipoDocumento.Find(documento.TipoDocumentoID).Nombre;
                        cc.TipoFormularioAplica = db.TipoDocumento.Find(documento.TipoDocumentoID).Nombre;
    
                        if (documento.TipoDocumentoID == 2) //nota de debito
                        {
                            cc.Importe = (documento.Total * (-1));
                        }
                        else
                        {
                            cc.Importe = documento.Total;
                        }
    
                        db.Nota.Add(documento);
                        db.CuentaCorrienteCliente.Add(cc);
    
    
                        db.SaveChanges();
                        return RedirectToAction("Index");
                    
    }
                    ViewBag.ClienteId = new SelectList(db.Cliente, "ClienteId", "RazonSocial", documento.ClienteId);
                  //  ViewBag.CondicionPagoID = new SelectList(db.CondicionPago, "CondicionPagoID", "Nombre", documento.CondicionPagoID);
                    ViewBag.TipoDocumentoID = new SelectList(db.TipoDocumento, "TipoDocumentoID", "Nombre", documento.TipoDocumentoID);
                    return View(documento);
                
            }

    Muchas gracias desde ya.

    l

    jueves, 8 de marzo de 2012 19:26

Respuestas

  • Gracias por responder.

    Aparentemente el problema estaba en en indice PK de la tabla. Lo eliminé, volví a crear y ahora funciona.

    Saludos

    • Marcado como respuesta sepilrat viernes, 16 de marzo de 2012 16:58
    viernes, 16 de marzo de 2012 16:58

Todas las respuestas