2011-08-28 6 views
5

Ho l'entità User con un paio di one-to-one e many-to-many relazioni e Identity primary key e generic repository create su ogni richiesta.Entity framework Rilevate modifiche in conflitto. Ciò può accadere quando si tenta di inserire più entità con la stessa chiave

Ho un modulo di registrazione con convalida client e server e ho deciso di disattivare la convalida del client per verificare come si comporterebbe il server in questo caso.

ho spento convalida del client per testare il modulo di registrazione e mettere alcuni valori non validi in modo da ottenere di nuovo forma dire che ho alcuni errori, dopo mi fisso che ho ottenuto molto interessante errore dicendo:

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

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

E 'stato strano per me, perché ho staccato l'entità User ma quando ho trovato questo How to clean-up an Entity Framework object context? così invece staccando solo User entità ho deciso di provare a pulire contesto di oggetto completamente in esecuzione il codice:

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

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

Quindi dopo tutto funzionava bene e non ho più avuto l'errore Conflicting changes detected, ma mi sto ancora chiedendo perché si sia verificata una tale situazione, forse qualcuno potrebbe spiegarlo?

+0

Mostrare come si sta inserendo 'user' – haim770

risposta

0

È possibile trovare la risposta here:

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

Questo risponde alla domanda? Si chiede in particolare perché questo si sia verificato in primo luogo, in quanto il suo codice non dovrebbe creare uno stato degenerato - non come vedere ciò che è valido e ciò che non lo è. –

Problemi correlati