Posso fare transazioni nidificate in NHibernate e come posso implementarle? Sto usando SQL Server 2008, quindi il supporto è sicuramente nel DBMS.Come faccio le transazioni nidificate in NHibernate?
trovo che se provo qualcosa di simile:
using (var outerTX = UnitOfWork.Current.BeginTransaction())
{
using (var nestedTX = UnitOfWork.Current.BeginTransaction())
{
... do stuff
nestedTX.Commit();
}
outerTX.Commit();
}
quindi per il momento si tratta di outerTX.Commit()
la transazione è diventato inattivo, e si traduce in un ObjectDisposedException sul AdoTransaction sessione.
Si suppone quindi di creare sessioni di NHibernate nidificate? O c'è qualche altra classe che dovremmo usare per avvolgere le transazioni (ho sentito parlare di TransactionScope, ma non sono sicuro di cosa sia)?
Ora sto usando Ayende's UnitOfWork implementation (grazie a Sneal).
Perdona ogni ingenuità in questa domanda, sono ancora nuovo di NHibernate.
Grazie!
EDIT: ho scoperto che è possibile utilizzare TransactionScope, come ad esempio:
using (var transactionScope = new TransactionScope())
{
using (var tx = UnitOfWork.Current.BeginTransaction())
{
... do stuff
tx.Commit();
}
using (var tx = UnitOfWork.Current.BeginTransaction())
{
... do stuff
tx.Commit();
}
transactionScope.Commit();
}
Tuttavia io non sono tutto ciò che entusiasti di questo, come ci blocca per l'utilizzo di SQL Server, e inoltre ho scoperto che se il database è remoto, devi preoccuparti di avere MSDTC abilitato ... un altro componente non funziona. Le transazioni nidificate sono così utili e facili da fare in SQL che presumo che NHibernate abbia un modo di emulare lo stesso ...
Sei stato in grado di trovare la risposta? Come fare finalmente le transazioni nidificate? – learning
@ user281180, una specie di. Non ho trovato alcun modo per realizzarli, ma puoi approssimare l'esperienza. Ho bloggato su di esso qui: http://blog.constructionhive.com/2010/07/22/nested-transactions-and-nhibernate/ – Gavin