http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-exceptionsによると、データベース例外の後、セッションは破棄されるべきです。CurrentContextなしでデータベース例外の後でNHibernateセッションを再開
私たちのWebアプリケーションでは、場合によっては、ADOExceptionsをスローしてキャッチするのが普通です。例えば、制約違反の場合。
リンク先のドキュメントによれば、セッションを中止する必要があります。ただし、制約違反が発生した場合は、データベースを使用して作業を行いたいので、新しいセッションが必要です。我々のテストで
我々は
CurrentSessionContext.Unbind(SessionFactory).Close();
CurrentSessionContext.Bind(SessionFactory.OpenSession());
を呼び出すことにより、これを行うが、我々はCurrentSessionContextを使用していないウェブアプリでは、我々はLazySessionContextを使用しています。 WebビジネスクラスではCurrentSessionContextを直接参照できません.HttpContextは統合テスト中に利用できないため、Webからは使用されず、LazySessionContextを参照できません。
セッションを廃棄して再作成し、現在のコンテキストに接続する方法はありますか?は直接コンテキストクラスを参照していませんか?私はSessionFactoryオブジェクトとSessionオブジェクトを持っています。
NHibernateリファレンスの更新リンク:http://nhibernate.info/doc/nh/en/index.html#manipulatingdata-exceptions –