我有一个 NHibernate 查询(正在填充 EXTJS 网格)
它向数据库发出 2 个查询,一个用于获取记录计数(用于分页目的),另一个用于获取前 N 行以填充网格。
从代码中,我一直在 Select count(*) 语句中遇到异常。
NHibernate.Exceptions.GenericADOException:
Failed to execute multi criteria[SQL:
SELECT count(*) as y0_ FROM RecordView this_ inner join ProcessesView
process1_ on this_.ProcessId=process1_.Id inner join BusinessModelsView
businessmo3_ on process1_.BusinessModelId=businessmo3_.Id inner join BatchesView
batch2_ on this_.BatchId=batch2_.Id WHERE this_.ProcessId = ?;
] ---> System.Data.SqlClient.SqlException: Timeout expired.
The timeout period elapsed prior to completion of the operation or the server
is not responding.
但是,如果我采用该确切查询并将其放入 SSMS 窗口并运行它,它会在 <1 秒内执行。
NHibernate 在这里做了什么“有趣”的事情。是否存在执行计划/缓存问题。我完全不知道为什么会发生这种情况。