c# - MySql、Ninject 和 NHibernate - 已经有一个与此连接关联的打开的 DataReader,必须先将其关闭

标签 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 不支持它。

有什么办法可以消除这个错误吗?

最佳答案

这是由于通过 Parrell.ForEach 在多线程中使用 NHibernate。

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

关于c# - MySql、Ninject 和 NHibernate - 已经有一个与此连接关联的打开的 DataReader,必须先将其关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939579/

相关文章:

windows - Windows 服务中带有 Autofac 的 NHibernate session 处理程序

mysql - 如何正确总结为 “Order Time” + “leave Time” - mysql (添加小时而不是秒)

php - 无法使用 codeigniter 列出另一个表数据

c# - IAsyncEnumerable 的 Linq 方法

c# - 面板控制绘画事件不适用于用户控制

MySQL 到 Excel VBA

c# - 我如何让 NHibernate 进行连接?

asp.net-mvc - 如何在我的项目中实现一个健壮的每请求 session 模式,同时专注于信息隐藏?

c# - 如何操纵回发优先级?

c# - Entity Framework 代码首先从父级中删除一到零/一个子级