Sto cercando di utilizzare NHibernate per gestire il livello di persistenza nella mia applicazione aziendale. In questo momento, mi chiedo come gestire modifiche/aggiornamenti simultanei in NHibernate o, più specificamente, come consentire a più istanze distribuite della mia applicazione di sapere che un utente ha modificato un determinato set di dati.NHibernate + modifiche simultanee: come ricevere notifiche delle modifiche?
Sono non in cerca di controllo delle versioni, vale a dire la coerenza di fronte a modifiche simultanee - So NHibernate supporta ottimistica concorrenza/pessimistica, e attualmente utilizzo concorrenza ottimistica via e la manipolazione del StateStateException
.
Voglio solo sapere: Dato che l'utente A modifica una riga nel set di dati, come consentire all'utente B di sapere che si è verificato un cambiamento in modo che il set di dati possa essere ricaricato? In questo momento, sto pigro caricando una grande lista di clienti in una griglia usando NHibernate. Ora, se viene aggiunto un nuovo cliente, vorrei aggiungerlo alla griglia senza dover ricaricare nuovamente i dati interi: la prima preoccupazione dell'applicazione è rappresentata dalle prestazioni.
Inoltre, NHibernate gestirà correttamente le modifiche alle righe esistenti? In qualche modo rileverà le modifiche nel database sottostante e aggiornerà gli oggetti .NET in memoria in modo che l'accesso alle loro proprietà produrrà i valori aggiornati?
Avevo pensato di usare una tabella aggiuntiva, risparmiando gli ID di oggetti aggiornati con un timestamp per aggiornare gli elementi me stesso, ma se NHinbernate offre qualcosa a sé stante, che sarebbe una scelta molto Bett, ovviamente ...
Come al secondo suggerimento di Mauricio, è possibile impostare un intercettore NHibernate che cade una nota in qualcosa come uno System.Messaging.MessageQueue ogni volta che un inserire o aggiornare si verifica su una classe che ti interessa. –