【问题标题】:Could not load an entity in NHibernate then Timeout Exception when Table is existing无法在 NHibernate 中加载实体,然后在 Table 存在时出现超时异常
【发布时间】:2010-10-11 08:32:15
【问题描述】:

我需要这方面的帮助。

插入/更新多条记录时出现此错误

could not load an entity: 
[Star.CNPL_BusinessObjects.Entities.CNPL.CNPL_AgencyProduct#48][SQL: SELECT cnpl_agenc0_.Id as Id48_0_, cnpl_agenc0_.AgencyID as AgencyID48_0_, cnpl_agenc0_.ProductID as ProductID48_0_, cnpl_agenc0_.CreatedDate as CreatedD4_48_0_, cnpl_agenc0_.CreatedBy as CreatedBy48_0_, cnpl_agenc0_.UpdatedDate as UpdatedD6_48_0_, cnpl_agenc0_.UpdatedBy as UpdatedBy48_0_ FROM CNPL_AgencyProduct cnpl_agenc0_ WHERE cnpl_agenc0_.Id=?]"

然后,我得到了这个内部异常

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
   at System.Data.SqlClient.SqlDataReader.get_MetaData() 
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() 
   at NHibernate.Impl.BatcherImpl.ExecuteReader(IDbCommand cmd) 
   at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, RowSelection selection, ISessionImplementor session) 
   at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) 
   at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) 
   at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, Type optionalEntityName, Object optionalIdentifier, IEntityPersister persister)

在这方面需要帮助。想法可以提供帮助。 :)

【问题讨论】:

    标签: c# asp.net sharepoint nhibernate fluent-nhibernate


    【解决方案1】:

    我们找到了问题的解决方案。

    似乎 NHibernate 从更新更改为插入时遇到了困难。问题是,当批量事务更新之前有插入时,会发生此错误。我们所做的是将更新和插入事务分开,并且它起作用了。

    我想知道这是不是因为 NHibernate dll。对此有什么想法吗?

    【讨论】:

      【解决方案2】:

      尝试在执行nhiberbate之前添加以下语句:例如:

      if (_session.Connection.State == System.Data.ConnectionState.Open)
                      {
                          _session.Connection.Close();
                          _session.Connection.Open();
                      }
                      else if (_session.Connection.State == System.Data.ConnectionState.Closed)
                      {                    
                          _session.Connection.Open();
                      }
      
      result = _session.CreateCriteria<T>().List<T>();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        • 2014-12-19
        相关资源
        最近更新 更多