我有一个简单的请求,它过滤数据、排序它和来自嵌入在 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 版本等。
为什么?