【发布时间】:2019-11-14 14:40:39
【问题描述】:
我正在使用 asp.net GridView 控件并将 DatasourceId 设置为 EntityDataSource,如下所示。 页面加载将 GridDataSource.EntityTypeFilter 设置为视图名称,并将 where 子句添加为 GridDataSource.Where = sWhereClause
视图有百万条记录,但 Where 条件过滤掉了记录。EntityDataSource 首先在子查询中获取所有百万条记录,然后应用 Where which timeout 命令。它生成如下查询。我希望 where 子句应该与 ViewName 选择语句本身一起使用,而不是与子查询表 Extent1 一起使用。
SELECT TOP (20)
[Filter1].[COL1],
[Filter1].[COL2]
[Filter1].[Col3]
FROM (
SELECT [Extent1].[COL1] , [Extent1].[COL2], [Extent1].[COL3]
, row_number() OVER (ORDER BY [Extent1].[COL1] ASC
) AS [row_number]
FROM
(
SELECT
ViewName.V1 ,
ViewName.V2
ViewName.V3
ViewName.V4
FROM [dbo].ViewName
)
AS [Extent1]
WHERE ([Extent1].[COL1] LIKE '%FilterValue%')
OR ([Extent1].[COL1] LIKE '%FilterValue%') OR ([Extent1].[COL2] LIKE '%FilterValue%') OR ([Extent1].[COL3] LIKE '%FilterValue%') )
) AS [Filter1]
WHERE [Filter1].[row_number] > 0
ORDER BY [Filter1].COL1] ASC
提前感谢并感谢任何帮助。
【问题讨论】:
标签: entity-framework gridview asp.net-dynamic-data entitydatasource