我在 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/