C# 使用NHibernate的多标准/未来中的超时异常

C# 使用NHibernate的多标准/未来中的超时异常,c#,asp.net,sql-server,nhibernate,C#,Asp.net,Sql Server,Nhibernate,我在SQLServer2008的ASP.NETC#应用程序中使用了NHibernate3.3.3 DetachedCriteria _pageCriteria = CriteriaTransformer.Clone(criteria) .SetMaxResults(maxResult) .SetFirstResult(firstResult); _recordCount= _countCriteria.GetExecutableCriteria(

我在SQLServer2008的ASP.NETC#应用程序中使用了NHibernate3.3.3

DetachedCriteria _pageCriteria = CriteriaTransformer.Clone(criteria)
            .SetMaxResults(maxResult)
            .SetFirstResult(firstResult);

_recordCount= _countCriteria.GetExecutableCriteria(session).FutureValue<int>();

var _pageCriteriaFuture = _pageCriteria.GetExecutableCriteria(session).Future<T>();

_pageCriteriaFuture.ToList();
关键是,如果我尝试单独执行这些步骤:

_recordCount= _countCriteria.GetExecutableCriteria(session).FutureValue<int>().Value;
\u recordCount=\u countCriteria.GetExecutableCriteria(会话).FutureValue().Value;
它像沙姆一样工作

为什么,如果我尝试在同一状态下执行它们,我会得到这个错误


是锁的问题吗?我还尝试在MSS management studio中执行相同的两个查询命令,但没有得到任何错误

这个原则,你以后使用的查询对我有用。不仅是在我试图重复这个问题的时候,甚至是在日常生活中

我也经历过同样的例外。这是因为有两个赛斯开了。第一个在事务中运行,使用update/insert-notcommitted锁定表。第二个是询问结果(未来),超时停止了它。所有这些都在同一个请求中(可怕)

注意:从片段(我知道它可能只是一个快速草稿,但以防万一,它是复制粘贴),我不确定命名约定 (是外部范围中的
标准
,是DAO的
\u记录计数
成员 类,因为“var\u pageCriteriaFuture”是本地的 变量,前缀为
\u
\u countCriteria
显示在 没有初始化的代码段


这一切都可能意味着,每个部分都是分离的,其中一些部分可能已经触发另一个会话的打开/关闭。因此,我建议,打开log4net和NHIberante的完整日志,并在事务打开时进行检查。可能会有答案。

分析此问题的最佳方法是通过Nhibernate和c记录您的会话见鬼,哪里出了问题。
_recordCount= _countCriteria.GetExecutableCriteria(session).FutureValue<int>().Value;