Ciao,
ho questo problema, di cui non riesco a capire l'origine.
Ho un client Silverlight che consuma dati ricavati da un servizio WCF basato su un modello EF che usa il template Self-tracking Entity.
Mediante una chiamata ricavo un oggetto Richiesta, con le sue relative Righe e, per ogni riga, il relativo Articolo.
Fino a qua tutto bene. Il problema è quando vado ad invocare il metodo WCF Salva(), così definito:
[code
Richiesta Salva(Richiesta richiesta)
{
_dc.Richieste.ApplyChanges(richiesta);
_dc.SaveChanges();
return richiesta;
}]
Questa chiamata mi genera una eccezione sulla chiamata ad ApplyChanges():
"AcceptChanges cannot continue because the object's key values conflict with another object in the ObjectStateManager. Make sure that the key values are unique before calling AcceptChanges."
In pratica, quando EF si va a ricaricare tutte le entity del grafo, incontra due volte la stessa entity Articolo e le considera due entità distinte anche se in realtà sono la stessa (hanno la stessa Entity Key).
Sto sbagliando qualcosa io oppure mi sto scontrando con un bug di EF?
Grazie
Ciao
Federico
Modificato da federico.orlandini il 02 maggio 2011 17.30 -
EDIT
L'errore al momento della chiamata dell'ApplyChanges() era dovuto all'errore nell'impostare la MergeOption a NoTracking del ObjectContext quando il servizio WCF va a leggere i dati dell'ordine. Settando questa opzione venivano create due istanze di ARTICOLO distinte per lo stesso articolo associato a due righe distinte.
Modificato da federico.orlandini il 06 maggio 2011 11.46 -