Mam następujący kod (uproszczony ze względu na dyskusję). Nie rozumiem, dlaczego właściwość session.Transaction
zwraca inną transakcję po wycofaniu.Session.Transaction zmiany po Cofaniu (NHibernate)
Na przykład oznacza to, że właściwość Session.Transaction.WasRolledBack
jest mało przydatna, o ile nie przechowuję odniesienia do pierwszej transakcji i nie sprawdzam jej właściwości.
Czy ktoś może wnieść tu pewien wgląd?
int transId = session.Transaction.GetHashCode();
using (var tx = session.BeginTransaction())
{
Assert.AreEqual(transId, tx.GetHashCode());
tx.Rollback();
Assert.AreEqual(transId, tx.GetHashCode());
Assert.AreEqual(transId, session.Transaction.GetHashCode()); // Fails
}
Update: Odpowiedź
Davida Walschots' jest bardzo pomocny i precyzyjne. Również znalazłem następujące w Nhibernate Documentation:
Jeśli wycofać transakcję należy niezwłocznie zamknąć i usunąć bieżącą sesję, aby upewnić się, że stan wewnętrzny NHibernate jest spójna „