我想知道这对于任何有经验的 NHibernate 开发人员来说是否熟悉,或者是否有人可以告诉我从哪里开始尝试解决这个问题:
我继承了一个用 ASP.NET 1.1 编写的 NHibernate 站点,使用 NHibernate 0.6 和 .NET 远程处理驻留在数据库服务器上的 DAL 层。我一直在尝试将其升级到 ASP.NET 3.5 和 NHibernate 1.2.1.4。
我用直接的数据库连接替换了 .NET 远程处理设置,一切正常,直到站点承受一定的负载,然后 NHibernate 调用开始间歇性地失败并抛出异常:ADOException 无法执行查询,然后是 NHibernate 生成的 SQL 语句。
给出错误的堆栈跟踪是:
NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, Type optionalEntityName, Object optionalIdentifier, IEntityPersister persister)
at NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId)
at NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id, Object optionalObject, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor session)
at NHibernate.Impl.SessionImpl.DoLoad(Type theClass, Object id, Object optionalObject, LockMode lockMode, Boolean checkDeleted)
at NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation)
at NHibernate.Impl.SessionImpl.Load(Type clazz, Object id)