Sto sviluppando un'applicazione WPF usando Entity Framework per la mia comunicazione con il database. L'applicazione ha una gerarchia di schede in cui ogni scheda ha un contesto db. Ogni scheda consente all'utente di visualizzare alcuni oggetti particolari, apportare modifiche, salvare, aggiornare, chiudere o aprire schede per oggetti correlati.
Il mio punto cruciale è che alcune schede contengono informazioni che dipendono anche da altri oggetti, un oggetto O di tipo A può essere correlato ad altri oggetti A (o_1, ..., o_n) in una relazione genitore-figlio, dove io avere un indicatore grafico che mostra se la proprietà P in O ha lo stesso valore di P in tutti i figli di O, per esempio. Indicatore rosso significa che sono diseguali, verde significa che sono uguali.
La "sovrapposizione" tra le informazioni tra i contesti sarà solo in termini di presentazione, le diverse schede non si sovrapporranno le une alle altre cambiando i rispettivi dati.
Ora se ho aperto Tab per O e o_3, cambio P in o_3 e salvataggio, potrebbe essere necessario modificare anche l'indicatore nella scheda per O, ma poiché tale scheda ha il suo contesto db (ora obsoleto), il l'indicatore mostra ancora il vecchio valore, che potrebbe confondere l'utente.
Questo sembra un problema molto generale e comune considerando quante applicazioni hanno questa architettura.
Come risolveresti il problema? Vedo alcune soluzioni diverse ma imperfette / problematiche.
A. Rendere l'utente consapevole del fatto che le schede possono diventare "obsolete" quando si salvano altre persone. Sembra una perdita di problemi tecnologici.
B. Forza gli aggiornamenti delle schede correlate durante il salvataggio. Ciò sovrascriverebbe le modifiche dell'utente o dovrei creare un sistema (modello di repository?) che mantenga informazioni sulle modifiche dell'utente e media cosa aggiornare e cosa tenere, cosa dire all'utente e così via.
C. Indicare obsoleto: ness delle schede correlate. Sembra la soluzione pragmatica, ma l'utente è lasciato a chiedersi cosa sarebbe interessato se si aggiornasse la scheda manualmente e tutte le modifiche apportate dovessero essere eliminate
D. Comunicare la modifica all'altra scheda senza coinvolgere il contesto db. Questo potrebbe funzionare, ma potrebbe portare a problemi complicati introducendo uno stato che non è correlato al contesto db, nel complesso aumenterebbe la complessità