2013-02-22 6 views
0

데이터를 필터링하고 jQuery에서 오는 페이지 및 주문 페이지가 검도 그리드의 도구 모음에 포함 된 간단한 요청을 받았습니다. 다음은 호출하는 코드입니다.Entity Framework 5.0 L2S에 여분의 따옴표가 있기 때문에 시작, 끝내기가 작동하지 않습니다.

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이다.

는 당신은 내가 쿼리가 잘 작동 여분의 따옴표를 제거하면 여분의 따옴표

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

주의, LIKE 사용되지만 것을 알 수있다. 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가 Nuget, 5.0에서 윈도우 7 비주얼 스튜디오 2012 엔티티 프레임 워크입니다, dBContext 시스템은 MVC 4 ntier 도구 모음의 자동 완성과 요청자 검도 그리드입니다.

EntityFramework 버전 등을 확인했습니다.

WHY ????

답변

1

결과를 검토 한 결과, 내가 본 것을 믿을 수 없었습니다. 그래서 나는 뒤로 물러나서 처음부터 신선한 표정을 가지고있었습니다. 따옴표 바로 옆에 작은 따옴표가있었습니다. 그래서 시스템은 설계대로 작동하고있었습니다.