我遇到了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();
}
}
答案 0 :(得分:1)
.Enumerable<>()
打开一个Datareader,并在Disposing the Transaction尝试发送回滚时保持打开状态。当数据加载器打开时,MySQL提供程序无法使用连接。