我有一个简单的请求,过滤数据,命令它和来自jQuery的页面 自动完成嵌入在Kendo Grid的工具栏中。这是拨打电话的代码。
Service.Get(s=> s.Name.Contains("Alcurt QI, In"), o => o.Name, 1, 15)
如果我从网上输入结果SQL是正确的,但它嵌入了添加 单引号。使用SQL事件探查器捕获SQL。这是一个片段 结果:
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%'
我已经验证了EntityFramework版本等。
为什么?
答案 0 :(得分:1)
在审查结果后,我无法相信我所看到的。所以我退后一步,从一开始就采取了新的看法,在报价旁边有一个单引号。所以系统按设计运行。