Ricevo un errore durante l'esecuzione di un'attività che dovrebbe essere abbastanza semplice.Eccezione DBConcurrency con Entity Framework 6
Sto utilizzando il codice Entity Framework 6 prima.
Sto aggiungendo una nuova entità al mio contesto, rimuovendola e quindi eseguendo un salvataggio. Questo produce un'eccezione DBConcurrency (io sono l'unico utente).
Per fare questo ho eseguire le seguenti operazioni:
zurich.TagProjectGroupItems.Add (tagProjectGroupItem); zurich.TagProjectGroupItems.RemoveRange (articoli);
(dell'oggetto originariamente aggiunto faceva parte della collezione)
int counter = zurich.SaveChanges();
Ciò genera la seguente eccezione:
Un'eccezione di tipo 'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException' si è verificato in EntityFramework.dll ma non è stata gestita nel codice utente Ulteriori informazioni: Aggiornamento Store, inserire o eliminare l'istruzione interessata da un numero imprevisto di righe (0). Le entità potrebbero essere state modificate o eliminate da quando le entità sono state caricate. Aggiorna le voci di ObjectStateManager.
L'objectcontext mi dice che ho 0 nuove voci, 0 aggiornate e 1 da eliminare. Immagino che stia cercando di rimuovere l'entità dal database e restituendo 0 risultati perché l'entità non è stata scritta.
Sto facendo qualcosa di assolutamente sbagliato ?! Non ho mai usato prima il codice in precedenza e ho usato solo il modello prima in EF4. Sono perplesso.
Molte grazie,
Rob
Stai dicendo che l'oggetto items che stai rimuovendo dalla collezione contiene il tagProjectGroupItem che hai * solo * aggiunto al contesto? –
Esatto, sì Ciaran. L'interfaccia utente consente all'utente di aggiungere un'entità e anche di rimuoverla/eliminarla. Potrei rimuovere ma ottengo lo stesso risultato ovviamente. –
Ma perché aggiungere l'elemento al contesto se si desidera rimuovere immediatamente l'elemento? L'aggiunta e la rimozione delle entità non sarebbero eventi/gestori separati? –