NHibernate:已经有一个与此Connection关联的开放DataReader必须先关闭

时间:2011-11-11 11:12:49

标签: mysql exception nhibernate connection

我遇到了NHibernate从MySQL数据库加载数据的问题。当我运行这段代码时(这是唯一一次创建NHibernate会话)它会在第一次抛出异常}。例外是:

“已经有一个与此Connection关联的开放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();
    }
}

1 个答案:

答案 0 :(得分:1)

.Enumerable<>()打开一个Datareader,并在Disposing the Transaction尝试发送回滚时保持打开状态。当数据加载器打开时,MySQL提供程序无法使用连接。