私は次のコードを持っています(議論のために簡略化されています)。私が理解できないのは、ロールバック後にsession.Transaction
プロパティが別のトランザクションを返す理由です。ロールバック後のSession.Transactionの変化(NHibernate)
たとえば、最初のトランザクションへの参照を保存してそのトランザクションのプロパティをチェックしない限り、プロパティSession.Transaction.WasRolledBack
はほとんど役に立ちません。
誰かがここでいくつかの洞察を提供できますか?
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
}
更新:
デビッドWalschots'答えは非常に有用かつ正確です。また、私はNhibernate Documentationで、次を発見した:
あなたがすぐ近くにすべきトランザクションをロールバックし、NHibernateの内部の状態が一貫していることを確認するために、現在のセッションを破棄した場合、「