【发布时间】:2009-07-27 15:03:52
【问题描述】:
我只是想知道其他人会遇到这个问题。 SubSonic 在使用 Group By 时生成不正确的 SQL 或 与分页不同。这是已知错误吗?
在使用分页时,请注意 group by 在错误的位置。
没有分页的 SubSonic SQL 输出:
exec sp_executesql N'SELECT [dbo].[vwMapProject].[Id], [dbo].[vwMapProject].[Name]
FROM [dbo].[vwMapProject]
INNER JOIN [dbo].[Product_ProductComponent] ON [dbo].[vwMapProject].[ProductId] = [dbo].[Product_ProductComponent].[ProductId]
INNER JOIN [dbo].[ProductComponent] ON [dbo].[Product_ProductComponent].[ProductComponentId] = [dbo].[ProductComponent].[Id]
WHERE [dbo].[ProductComponent].[ExternalId] LIKE @ExternalId0
GROUP BY [dbo].[vwMapProject].[Id], [dbo].[vwMapProject].[Name]
',N'@ExternalId0 nvarchar(8)',@ExternalId0=N'GC767AV%'
带有分页的 SubSonic SQL 输出:
exec sp_executesql N'
SELECT *
FROM (SELECT ROW_NUMBER() OVER ( ORDER BY Id) AS Row,
[dbo].[vwMapProject].[Id], [dbo].[vwMapProject].[Name]
FROM [dbo].[vwMapProject]
INNER JOIN [dbo].[Product_ProductComponent] ON [dbo].[vwMapProject].[ProductId] = [dbo].[Product_ProductComponent].[ProductId]
INNER JOIN [dbo].[ProductComponent] ON [dbo].[Product_ProductComponent].[ProductComponentId] = [dbo].[ProductComponent].[Id]
GROUP BY [dbo].[vwMapProject].[Id], [dbo].[vwMapProject].[Name]
WHERE [dbo].[ProductComponent].[ExternalId] LIKE @ExternalId0
) AS PagedResults
WHERE Row >= 1 AND Row <= 20',N'@ExternalId0 nvarchar(8)',@ExternalId0=N'GC767AV%'
【问题讨论】:
-
根据他的blog,您应该在他的github repo 报告问题。