2011-08-21 4 views
5

Ho riscontrato il seguente problema con i servizi RIA WCF: Ho un tavolo Cliente e una tabella Indirizzo. Un cliente può avere 0 ... n indirizzi. C'è un modulo per la modifica del cliente, con un Datagrid che mostra gli indirizzi. Aggiungi/modifica un indirizzo in una finestra secondaria facendo clic su Aggiungi/Modifica. Ora ecco il punto:Rifiuta modifiche per entità specifiche

Il problema è che l'utente dovrebbe sempre essere in grado di annullare le modifiche. Questo non è un problema, tranne : Se si crea un nuovo cliente e di aggiungere un indirizzo a quel cliente, poi vuole modificare l'indirizzo, ma vuole annullare che modifica.

  • Non è possibile fare RejectChanges nel contesto, perché cancellerebbe l'indirizzo con il cliente.
  • Non è possibile utilizzare contesti separati perché non è possibile stabilire la relazione della chiave esterna.

Come vorresti risolvere questo?

risposta

6

Entity implementa IRevertibleChangeTracking per supportare questo scenario. Dal momento che è implementato in modo esplicito, dovrai lanciarlo. Il seguente codice funzionerà.

((IRevertibleChangeTracking)address).RejectChanges(); 
+0

piccolo errore di ortografia nel nome dell'interfaccia (IRevertibleChangeTracking) http://msdn.microsoft.com/en-us/library/system .componentmodel.irevertiblechangetracking% 28v = VS.95% 29.aspx –

+0

Grazie. Ci crederesti che ho sbagliato in modo coerente? :) –

+0

Molto utile, solo le informazioni di cui avevo bisogno. Grazie. – peter

0

E 'di lavoro in caso di modifica, ma non nel caso di nuova ..

+0

In caso di nuovo, sblocca nuovamente l'entità. – LueTm