beginTransaction
jak stwierdza rozpoczyna transakcję,
Natomiast
session.Transaction
powróci na bieżący aktywną transakcję jeśli zerowy stworzy jeden.
Sesja NHibernate śledzi bieżącą aktywną transakcję (niezaakceptowaną lub wycofaną ).
Jeśli zadzwonisz ISession.Transaction
gdy transakcja nie została jeszcze jeszcze utworzony w czasie życia sesji, sesja będzie utworzyć nowy obiekt transakcji w danym momencie, ale nie zacznie jeszcze. Po wywołaniu ISession.BeginTransaction
, sesja zobaczy , jeśli jest już obiektem transakcji, który został wcześniej utworzony, , ale jeszcze nie został ukończony. Jeśli tak, zwróci ten obiekt transakcji. Jeśli nie, utworzy nowy obiekt transakcji, rozpocznie go i zapisze odniesienie dla tego nowego obiektu.
Po zakończeniu transakcji, obiekt transakcji powiadamia sesję , do której należy, że zakończyła sesję, na której sesja zwalnia odniesienie do obiektu transakcji. Każde następne wywołanie do ISession.Transaction
lub ISession.BeginTransaction
spowoduje następnie utworzenie nowego obiektu transakcji.
NHibernate nie obsługuje ponownego użycia obiektów transakcji dla więcej niż jednej transakcji ( ) (to zachowanie może się różnić od stanu hibernacji, które wydaje się, że obsługuje ponowne użycie obiektów transakcji).
Refer to this document.
Zaznacz to: http://ayende.com/blog/3775/nh-prof-alerts-use-of-implicit-transactions-is-discouraged – Freelancer
Reading Ayende jest zawsze dobra, ale ... w tym przypadku nie odpowiada na moje pytanie – SteveM