WCF MSMQサービス(Windowsサービスでホストされている)があります。私のメソッドには、TransactionScopeRequired属性があります。
Nhibernateを使用してデータをデータベースに保存しています。各呼び出しの後に、必ず各Nhibernateセッションを閉じたいと思います。
私はデータアクセスで次のアプローチ(城の施設を使用)を使用していました
using(var session = sessionManager.OpenSession())
using(var transaction = session.BeginTransaction())
{
// do work
transaction.Commit()
}
しかし、メインのサービスメソッドが終了すると、Nhibernateセッションを既に破棄しているため、エラーが発生します。DTCは、コミットを実行するためにこれが必要だと思います。
私の質問は:
DTCがコミットした後(つまり、サービスメソッドを終了した後)にNhibernateセッションを閉じるための最良の方法は何でしょうか?
ありがとうございました。