2011-08-28 23 views
5

Tengo entidad User con un par de relaciones one-to-one y many-to-many y , y generic repository que se creó en cada solicitud.Marco de entidad Se detectaron cambios conflictivos. Esto puede suceder cuando se intentan insertar entidades múltiples con la misma clave

Tengo un formulario de registro con la validación del cliente y del servidor y decidí desactivar la validación del cliente para probar cómo se comportaría el servidor en ese caso.

Apagué la validación del cliente para probar el formulario de inscripción y poner algunos valores no válidos, así que regrese formulario diciendo que tengo algunos errores, después de i fijo que ha obtenido un error muy interesante diciendo:

_context.SaveChanges(); //towing the error below: 

Conflicting changes detected. This may happen when trying to insert multiple entities with the same key 

era extraño para mí porque me separé la entidad User pero cuando me encontré con este How to clean-up an Entity Framework object context? así que en vez separar única entidad User i decidió tratar de limpiar contexto de objetos de ejecución por completo ese código:

var objectStateEntries = this.objectContext 
          .ObjectStateManager 
          .GetObjectStateEntries(EntityState.Added); 

    foreach (var objectStateEntry in objectStateEntries) 
    { 
     if(objectStateEntry.Entity != null) 
      this.objectContext.Detach(objectStateEntry.Entity); 
    } 

Así que después de que todo funcionaba bien y ya no recibí el error Conflicting changes detected, pero aún me pregunto por qué se estaba produciendo tal situación, ¿alguien podría explicarlo?

+0

Mostrar cómo se está insertando 'User' – haim770

Respuesta

0

Usted puede encontrar su respuesta here:

context.ObjectStateManager.GetObjectStateEntries(System.Data.Entity.EntityState.Added| System.Data.Entity.EntityState.Unchanged); 
+1

¿Esto responde a la pregunta? Específicamente pregunta por qué estaba ocurriendo esto en primer lugar, en el sentido de que su código no debería estar creando un estado degenerado, no cómo ver qué es válido y qué no. –

Cuestiones relacionadas