0

我有一个简单的请求,它过滤数据、排序它和来自嵌入在 Kendo Grid 工具栏中的 jQuery AutoComplete 的页面。这是进行调用的代码。

Service.Get(s=> s.Name.Contains("Alcurt QI, In"), o => o.Name, 1, 15)

如果我从网上输入,则生成的 SQL 是正确的,但是它嵌入了附加单引号。SQL 是使用 SQL Profiler 捕获的。以下是结果的片段:

WHERE [Extent1].[Name] LIKE @p__linq__0 ESCAPE N''~''
)  AS [Project1]
)  AS [Project1]
WHERE [Project1].[row_number] > 0
ORDER BY [Project1].[Name] ASC',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'%''Alcurt QI, In''%'

名称列是 nvarchar。

您会看到它正在使用 LIKE 但是,请注意额外的引号

@p__linq__0=N'%''Alcurt QI, In''%'

如果我删除额外的引号,查询工作正常。我在 SQL Manager 中对其进行了测试。

然后我编写了一个模拟 HttpContext 的单元测试并调用了相同的控制器操作,并且 SQL 工作正常。这是其中的 SQL,而不是缺少的引号。

WHERE [Extent1].[Name] LIKE @p__linq__0 ESCAPE ''~''
)  AS [Project1]
)  AS [Project1]
WHERE [Project1].[row_number] > 0
ORDER BY [Project1].[Name] ASC',N'@p__linq__0 varchar(8000)',@p__linq__0='%Alcurt QI, In%'
  • 操作系统是 Windows 7
  • 视觉工作室 2012
  • Nuget 的实体框架,5.0,dBContext
  • 系统是 MVC 4 ntier
  • 工具栏中带有自动完成功能的请求者剑道网格。

我已经验证了 EntityFramework 版本等。

为什么?

4

1 回答 1

1

在查看结果后,我简直不敢相信我所看到的。所以我退后一步,从头开始重新审视,因为引用旁边有一个引用。因此,该系统按设计运行。

于 2013-02-23T21:34:25.757 回答