10 messaggi dal 05 febbraio 2009
Buongiorno a tutti, ho notato che in scenari disconnessi (EF + WCF + Silverlight) nel caso di aggiornamenti
public void Update(Candidate entity)
{
    CurrentObjectSet.Attach(entity);
    Context.ChangeObjectState(entity, EntityState.Modified);
}

ricevo l'errore "An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.".
Questo non accade se cerco di invocare il metodo di update direttamente da un progetto di Test del servizio WCF, ad esempio.
L'esempio postato è volutamente preso da ModelVirtualCasting, preso a piè pari e modificato secondo la comformazione del mio dominio.
E' il mio primo vero "slancio" verso l'ORM di mamma Microsoft ma ...
Un grazie di cuore a chiunque possa darmi supporto.

vibstudio
Modificato da vibstudio il 18 novembre 2010 11.16 -
Beh, dovrei capire in particolare cosa stai facendo: l'errore di per sé è chiaro, stai provando ad effettuare un attach di un Candidate di Id 35 e nell'object context esiste già un candidate con il medesimo Id.

Se l'oggetto è già presente, non devi effettuare un Attach e se ne hai un'istanza detached, puoi ribaltare i valori delle sue proprietà sull'oggetto nel context tramite il metodo ApplyCurrentValues

Ciao,
m.
10 messaggi dal 05 febbraio 2009
Che esista già il dato con il medesimo ID mi pare ovvio, tant'è che "vorrei aggiornarlo".
La cosa che non capisco è perchè la chiamata allo stesso metodo

public void Update(Candidate entity)
{
    CurrentObjectSet.Attach(entity);
    Context.ChangeObjectState(entity, EntityState.Modified);
}

del medesimo XXXRepository non fallisce (l'aggiornamento viene eseguito) se effetuata in contesto "connesso", da un progetto di WCF testing ad esempio.
Occhio che ti ho detto che esiste già nel context, non parlo del database, dove nonostante oggi sia un po' più rinco del solito, ho capito perfettamente che la entity è già presente

Se però nel context questo dato è già presente, perchè l'hai già fetchato con la *stessa istanza* di object context, o perché hai già fatto un attach precedente, ricevi l'errore che segnali.

Più chiaro?
m.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC