私が働いている場所で問題が発生しています。MVC3 ビュー内から NHibernate エンティティの遅延ロードされたプロパティにアクセスしようとすると、"No Session" LazyInitializationException がスローされます。これは先週から発生し始めたばかりですが、問題を絞り込むことはできませんでした. しかし、単純な解決策があるようには見えません。
注:
- スタックトレースの例: http://textsnip.com/613608
- プロジェクトのどこにも Dispose (または using で Session をラップ) しません。ObjectFactory にそれを処理させます。
- これは、回帰テスト (WatiN を使用した SpecFlow) を実行しているときに、TeamCity テスト環境でのみ発生します。開発マシンで問題を再現できる人は誰もいません。
- これも一貫して発生しません。通常、失敗するテストは同じテストですが、常に失敗するわけではありません。同じビューのいくつかにヒットするページにアクセスする他のテストは失敗しません。
- 失敗するテストでは、非コレクションよりも遅延ロードされたコレクションの初期化に重きを置いているように見えますが、両方とも発生します。
- 可能であればいつでもエンティティを熱心にロードするほうがよいことはわかっていますが、多くのテーブル モデルの相互依存性のために、現時点ではそれほど実現可能ではありません。
ここで何が欠けていますか?