首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NHibernate:已有一个打开的DataReader与此连接关联,必须先将其关闭

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

Stack Overflow用户
提问于 2011-11-11 19:12:49
回答 1查看 3.8K关注 0票数 1

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

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

我不知道为什么会发生这种事?

代码语言:javascript
运行
复制
   // ----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();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2011-11-11 23:05:46

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8093149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档