2013-02-22 37 views
0

我有一个简单的请求,过滤数据,命令它和页面来自jQuery 嵌入在Kendo网格工具栏中的自动完成。这是打电话的代码。实体框架5.0 L2S包含,StartsWith,EndsWith由于额外的引号不工作

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。

你看它使用等,但是,请注意额外的引号

@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%' 

O/S是Windows 7的 的Visual Studio 2012 实体从的NuGet,5.0框架的DbContext 系统是MVC 4 n层 请求者剑道网格自动完成的工具栏。

我已经验证了的EntityFramework版本等

WHY ????

回答

1

查看结果后,我无法相信我所看到的。于是我退后一步,从abd开始重新看了一眼,旁边有一个单引号。所以系统按设计运行。