私は、独自のSqlconnectionを開くために使用していたいくつかのレガシーコードを持っています。そして、Nhibernateが作成するSqlConnectionを使用したいと思います。どこからでも現在のNhibernateセッションにアクセスする方法はありますか?
しかし、私はむしろ、コードをたくさん変更するのを避けたいと思います(DI、設定の追加など...)ので、現在のNhibernateセッションを取得する簡単な(巧みな)方法はありますか?
私は、独自のSqlconnectionを開くために使用していたいくつかのレガシーコードを持っています。そして、Nhibernateが作成するSqlConnectionを使用したいと思います。どこからでも現在のNhibernateセッションにアクセスする方法はありますか?
しかし、私はむしろ、コードをたくさん変更するのを避けたいと思います(DI、設定の追加など...)ので、現在のNhibernateセッションを取得する簡単な(巧みな)方法はありますか?
いいえ、とにかく現在のNHibernateセッションは何ですか?
Webアプリケーションでは、各HTTPリクエストは特定のNHibernateセッションで動作する必要があります。
デスクトップアプリケーションでは、各画面でそれぞれの操作に1つのセッションが使用される可能性があります。
NHibernateセッションはシングルトンとして使用されることは想定されていません。
レガシーコードで新しいNHibernateセッションを開き、そのCreateSQLQuery
メソッドを使用するために、おそらくセッションファクトリを使用するべきです。セッションファクトリは、通常、シングルトンの存続期間を持つ必要があります。
Hibernateセッションをアプリケーション(HttpContext、CallContextなど)に意味のあるコンテキストにバインドした場合は、そこから取得することができます。コンテキストが失われる可能性のあるケースを注意してください(非同期/コンテキストを復元しないように設定されたasp.netスレッドの敏捷性(HttpContext
の損失は発生しませんが、CallContext
の損失を引き起こしません)。