2011-08-04 8 views
2

Fluent NHibernateでアクセスしているMySQLデータベースを使用しています。そう:MySql、Ninject、NHibernate - このConnectionに関連付けられているオープンDataReaderが既にあります。最初に閉じる必要があります。

 Kernel.Bind<ISession>() 
      .ToMethod(context => Kernel.Get<ISessionFactory>().OpenSession()) 
      .InRequestScope(); 

は私がOnDeactivation(x=>x.Dispose());を持っていたが、NinjectはあなたのためのDisposeを呼び出すと、それは必要ありませんと言われています。

すべての機能は、「私はこの接続に関連付けられている開いているDataReaderが既に閉じている必要があります」という読み込みを引き起こすリンクをダブルクリックすると、何度も有効です。

私は、複数のアクティブレコードセット(MARS)を有効にする必要があることを読んだが、私はこれがMySQLによってサポートされていないと信じています。

このエラーを取り除くためにできることはありますか?

+0

あなたのISessionFactoryはどのように配線されていますか?あなたは取引を使用していますか? –

+0

いいえ、私はその上の各メソッドの中にトランザクションを持つ汎用リポジトリを使用しています。リクエスト全体でトランザクションをどのように使用すればよいですか? –

+0

「ISessionFactory」のバインディングはどこですか? – Aaronaught

答えて

2

これは、Parrell.ForEachを介して複数のスレッドでNHibernateを使用していたためです。

したがって、基本的に複数のスレッドで1つのセッションを使用しないでください。

関連する問題