mysql - NHibernate:已经有一个与此连接关联的打开的 DataReader,必须先将其关闭

标签 mysql exception nhibernate connection

我在 NHibernate 从 MySQL 数据库加载数据时遇到问题。当我运行此代码时(这是唯一一次创建 NHibernate session ),它会在第一个 } 处抛出异常。异常(exception)情况是:

“已经有一个与此连接关联的打开的 DataReader,必须先将其关闭。”

我不知道为什么会这样?

   // ----snip----

        var sessionFactory = NHibernateSessionHelper.CreateSessionFactory();
        using (var session = sessionFactory.OpenSession())
        {
            using (session.BeginTransaction())
            {
                _timeRecords = session
                    .CreateQuery(
                        "select tr from TimeRecord as tr where tr.Billable = true and tr.InvoiceDate is null and tr.CheckedOn is not null")
                    .Enumerable<TimeRecord>();
            } // Exception is thrown here
        }

   // ----snip----

class NHibernateSessionHelper
{
    public static ISessionFactory CreateSessionFactory()
    {
        return Fluently.Configure()
            .Database(
                MySQLConfiguration
                    .Standard.ConnectionString(c => c
                                                        .Server("db01.redknot.nl")
                                                        .Database("todo_youngguns_nl")
                                                        .Username("youngguns.nl")
                                                        .Password(""))
                    .ShowSql()
            )
            .Mappings(m =>
                      m.FluentMappings.AddFromAssemblyOf<UserMap>())
            .BuildSessionFactory();
    }
}

最佳答案

.Enumerable<>()打开 Datareader 并在处理事务尝试发送回滚时保持打开状态。当数据读取器打开时,MySQL 提供程序无法使用连接。

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

相关文章:

nhibernate - nhibernate 是否在 TransactionScope 中创建隐式事务?

php - App Inventor/PHP 应用程序停止在 Note 4 上运行

exception - jqGrid 在创建定义时捕获异常

mysql - SQL 使用 INNER JOIN 更新选定的行

c# - "using exceptions to control flow"示例

javascript - 当您无法控制时如何规避同源策略错误

nhibernate - 创建一个 NHibernate 对象并初始化一个 Set

c# - 在 NHibernate 中急切加载子集合和子集合

mysql - SELECT 应该给出 1 :n realtionship 中唯一 n 的数量

php - Prestashop CMS 页面查看计数器