MySql,Ninject和NHibernate - 已经有一个与此Connection相关联的开放DataReader,必须先关闭它

时间:2011-08-04 10:11:23

标签: c# mysql nhibernate ninject

我正在使用一个MySQL数据库,我正在使用Fluent NHibernate访问它,并使用Ninject连接Session-Per-Request,如下所示:

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

我确实有OnDeactivation(x=>x.Dispose());但是被告知没有必要,因为Ninject会为你调用Dispose。

除了我点击导致读取的链接的几次之外,一切都很有效,我得到“已经有一个与此连接关联的开放DataReader必须先关闭。”

我已经读过我需要启用多个活动记录集(MARS)但是我相信这不受MySQL的支持。

我能做些什么来摆脱这个错误吗?

1 个答案:

答案 0 :(得分:2)

这是因为通过Parallel.ForEach在多个线程中使用NHibernate。

所以基本上不要在多个线程中使用单个会话!