Subsonic 为什么GetPaged()执行两个数据库调用?
我对亚音速(即评估3.0.0.3)有点陌生,在GetPaged(int pageIndex,int pageSize)中遇到了一个奇怪的行为。当我执行该方法时,它执行两个SQL调用。你知道为什么吗 细节 假设我有一个200行的“文化”表。在我的代码中,我做了一些类似于Subsonic 为什么GetPaged()执行两个数据库调用?,subsonic,subsonic3,Subsonic,Subsonic3,我对亚音速(即评估3.0.0.3)有点陌生,在GetPaged(int pageIndex,int pageSize)中遇到了一个奇怪的行为。当我执行该方法时,它执行两个SQL调用。你知道为什么吗 细节 假设我有一个200行的“文化”表。在我的代码中,我做了一些类似于 var sonicCollection = from c in RTE.Culture.GetPaged(1, 25) select c; 现在,我希望它执行一个查询,返回cultu
var sonicCollection = from c in RTE.Culture.GetPaged(1, 25)
select c;
现在,我希望它执行一个查询,返回cultures表中的前25个条目。当我观看SQL profiler时,我看到两个查询由运行
首先这个--
那么这个--
选择*
从(选择上方的行号()(
按文化顺序(ASC)作为行,
[dbo].[Cultures].[cultureCode],[dbo].[Cultures].[cultureName]
来自[dbo]。[文化]
)
作为PagedResults
其中Row>=1和Row您只想使用RTE.Culture.GetPaged()-它为您运行分页查询。这是代码中的一个错误。代码实际上查询每个记录,然后在每个记录上迭代计数。我在github回购协议中创建了一个问题:
您可以很容易地下载源代码、修复问题并重新编译。我已经这样做了,并且解决了我的问题。对不起,我的疏忽。。。我将代码改为:var colPaged=RTE.Culture.GetPaged(1,20);我仍然看到两个查询行为。
SELECT [dbo].[Cultures].[cultureCode], [dbo].[Cultures].[cultureName]
FROM [dbo].[Cultures]
SELECT *
FROM (SELECT ROW_NUMBER() OVER (
ORDER BY cultureID ASC) AS Row,
[dbo].[Cultures].[cultureCode], [dbo].[Cultures].[cultureName]
FROM [dbo].[Cultures]
)
AS PagedResults
WHERE Row >= 1 AND Row <= 25