我有一个 WCF MSMQ 服务(托管在 Windows 服务中)。我的方法上有 TransactionScopeRequired 属性。
我正在使用 Nhibernate 将我的数据保存到我的数据库中。我想确保在每次通话后关闭每个 Nhibernate 会话。
我在数据访问中使用了以下方法(使用城堡设施)
using(var session = sessionManager.OpenSession())
using(var transaction = session.BeginTransaction())
{
// do work
transaction.Commit()
}
但是当我的主要服务方法退出时,我收到了一个错误,因为我已经处理了 Nhibernate 会话,并且我认为 DTC 需要它来完成它的提交。
我的问题是:
关闭 Nhibernate 会话的最佳方式是什么 - 在 DTC 提交之后(即在我退出我的服务方法之后?)。
谢谢你。