2008-09-12 5 views
2

Linq의 Contains 문에서 버그를 발견했습니다 (실제로 Linq 또는 Linq에서 SQL로 연결되어 있는지 확실하지 않음). 다른 사람이이 문제를 확인하고 해결 방법이나 해결 방법이 있는지 알고 싶습니다.linq의 버그 문이 포함되어 있습니다 - 수정 사항이나 해결 방법이 있습니까?

포함 된 쿼리 소스에 10 개가 넘는 항목이있는 경우 항목을 SQL 쿼리에 올바르게 전달하지 않습니다. 그것이하는 일을 설명하는 것은 어렵습니다. 당신은 원시 쿼리를 보면

는 매개 변수는 다음과 같다 :

@P0 = 'aaa' 
@P1 = 'bbb' 
@P2 = 'ccc' 
... [@P3 through @P9] 
@P10 = '111' 
@P11 = '222' 
... [@p12 through @P19] 
@P20 = 'sss' 
... [@P21 through @P99] 
@P100 = 'qqq' 

값은 (모든 매개 변수가 해결)이이 값이 것처럼이 매개 변수를 해결 한 최종 쿼리에 전달 될 때 전달 :

@P0 = 'aaa' 
@P1 = 'bbb' 
@P2 = 'ccc' 
... 
@P10 = 'bbb'0 
@P11 = 'bbb'1 
... 
@P20 = 'ccc'0 
... 
@P100 = 'bbb'00 

그래서 그것은 단지 @P 후 첫 번째 자리에서 외모를 해결하는 매개 변수처럼 보이고, 다음 매개 변수 이름의 끝에서 왼쪽 아무것도 추가하는 해결합니다.

적어도 Visual Studio에 대한 SQL Server Query Visualizer 플러그인은 쿼리가 수행하는 것을 보여줍니다.

정말 이상합니다.

아무도 조언이 있다면 공유하십시오. 감사!

업데이트 : 내가 지금 대신이 포함 조인을 사용하는 곳으로 원래 LINQ 문을 다시 작성했지만, 여전히이 문제를 해결 방법이 있는지 알고 싶습니다
.

+0

이것은 일반적으로 LINQ와는 반대로 LINQ to SQL 버그 일 수 있습니다. –

+0

예, 당신이 옳다는 것이 확실합니다. linq 언어가 아니라 SQL의 인터프리터가 될 수 있다는 것을 알 수 있습니다. –

답변

1

더 많은 것을 보았을 때, 그리고 더 많은 테스트를 실행 한 후에, Visual Studio 용 SQL Server Query Visualizer 플러그인에 버그가 있다고 생각합니다. 실제로 Linq에서 SQL 자체가 아닙니다. 따라서 생각했던 것만 큼 상황이 나쁘지는 않습니다. 쿼리가 올바른 결과를 반환하지만 Visualizer에서 표시하는 내용을 신뢰할 수 없습니다. 별로 좋지는 않지만 내가 생각했던 것보다 낫다.

0

판단을 내리기 전에 데이터 인터페이스의 출력을 실제로보십시오.

DataContext.Log()는 생성 된 SQL을 제공합니다.

관련 문제