【问题标题】:SubSonic generate incorrect SQL when using Group By or Distinct with PagingSubSonic 在使用 Group By 或 Distinct with Paging 时生成不正确的 SQL
【发布时间】: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%'

【问题讨论】:

标签: sql subsonic


【解决方案1】:

这应该在当前版本 - 3.0.0.3 中修复。如果你没有 - 请前往我们的项目网站,因为这是一个早期报告的错误,我花了一些时间试图解决它:)

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2012-04-03
    相关资源
    最近更新 更多