我正在使用一个 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 不支持它。
有什么办法可以消除这个错误吗?
最佳答案
这是由于通过 Parrell.ForEach 在多线程中使用 NHibernate。
所以基本上不要在多个线程中使用单个 session !
关于c# - MySql、Ninject 和 NHibernate - 已经有一个与此连接关联的打开的 DataReader,必须先将其关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939579/