相关疑难解决方法(0)

回滚后的Session.Transaction更改(NHibernate)

我有以下代码(为了讨论而简化).我不明白的是为什么session.Transaction属性在回滚后返回不同的事务.

例如,这意味着该属性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
}
Run Code Online (Sandbox Code Playgroud)

更新:

David Walschots的回答非常有用且精确.另外,我在Nhibernate文档中找到了以下内容:

如果你回滚事务,你应该立即关闭并放弃当前会话,以确保NHibernate的内部状态是一致的."

nhibernate transactions

6
推荐指数
1
解决办法
3490
查看次数

标签 统计

nhibernate ×1

transactions ×1