Sto pensando di creare la mia implementazione IUnitOfWork
per un livello di persistenza NHibernate.è possibile che si verifichino più transazioni all'interno di una sessione in nhibernate? Ed è una cattiva idea?
Sembra che il modo giusto per fare questo sarebbe di avere il ISession
e ITransaction
un'istanza nel costruttore, e quindi smaltiti nel distruttore o il metodo Dispose()
.
Naturalmente, se qualcuno invoca il metodo Save()
, poi il ISession
sarebbe svuota ei ITransaction
sarebbe completo, così dopo aver chiamato Save()
, non ci sarebbe una transazione aperta valida per Save()
di nuovo ... a meno che non ho commesso il prima transazione e immediatamente ha aperto un'altra, nuova transazione. Ma è una buona idea?
Per quanto riguarda la progettazione, è logico eseguire un'operazione di commit, ma non avrò necessariamente il controllo del codice e altri sviluppatori potrebbero essere meno disciplinati riguardo al pattern UnitOfWork.
Perdo/guadagno qualcosa cercando di rendere tollerante il funzionamento di UnitOfWork su più transazioni per sessione? Devo controllare una transazione aperta e lanciare un'eccezione se è già stata commessa, piuttosto che effettuare una nuova transazione?
App Web o desktop? – Phill
È stato progettato per un'applicazione Web. –