none
Error Optimistic Concurrency Update db.SaveChange(); RRS feed

  • Pregunta

  • En el momento de grabar los cambios realizados en las entidades me genera este error:

    "Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries."

    I no entiendo a que se debe mi codigo es este:

    public ActionResult Create([Bind(Include = "ID,TutorID,AlumnoID")] Inscripcion inscripcion, Servicio servicio)
            {
                ImporteTotalInscripcion = ImporteTotalMatricula + ImporteTotalMensualidad;
                inscripcion.CentroID = tutor.CentroID;
                inscripcion.FormaPagoID = 3;
                inscripcion.TutorID = tutor.ID;
                inscripcion.AlumnoID = alumno.ID;
                inscripcion.Servicios = Servicios;
                Double totalPeriodos = 0;
                foreach (Periodo item in Periodos) {
                    db.Entry(item).State = EntityState.Unchanged;
                    Double Importe = item.Importe * item.Meses;
                    totalPeriodos = totalPeriodos + Importe;
                }
                if (totalPeriodos == ImporteTotalInscripcion) {                 
                
                foreach (Servicio item in Servicios) {
                    db.Entry(item).State = EntityState.Unchanged;
                }
                ImporteTotalInscripcion = ImporteTotalMatricula + ImporteTotalMensualidad;
                tutor.CuentaCorriente = inscripcion.Cuenta.ToString();
                inscripcion.Periodos = Periodos;                
                    db.Inscripciones.Add(inscripcion);
                    db.SaveChanges();
                    
                    return RedirectToAction("Index");
            }
                return View();
            }

    Si alguien pudiera ayudarme me haría un gran favor!

    Espero respuesta!

    martes, 28 de julio de 2015 13:39

Todas las respuestas

  • hola

    cuando defines estas lineas

     inscripcion.Servicios = Servicios;

    inscripcion.Periodos = Periodos;       

    de donde salen las variables Servicios y Periodos que asignas a la inscripcion?

    bueno en realidad servicios viene por parametro, pero este esta en minuscula

    la de Periodos no se de donde la obtienes

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 28 de julio de 2015 14:13
  • Son dos variables de tipo List<> que se rellenan en otros metodos del controlador
    martes, 28 de julio de 2015 15:33
  • porque no intentas agrega la misma entidad que le asignas el estado

    foreach (Periodo item in Periodos) {
    	db.Entry(item).State = EntityState.Unchanged;
    	inscripcion.Periodos.Add(item);
    }            
    
    foreach (Servicio item in Servicios) 
    {
    	db.Entry(item).State = EntityState.Unchanged;
    	inscripcion.Servicios.Add(item);
    }

    depsues para calcular el total puedes usar linq

    Double totalPeriodos = Periodos.Sum(x=> x.Importe * x.Meses);

    no necesitas un foreach


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 28 de julio de 2015 15:46