내가 가진 가정 반환두 개의 서로 다른 LINQ 쿼리는 모두 동일한 결과
var activitiesStart = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == startSnapshot);
var activitiesEnd = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == endSnapshot);
두 쿼리는 동일한 결과를 반환합니다. 그 결과는 실행되는 두 개의 쿼리 중 첫 번째 쿼리 결과입니다. 내가 그들을 강제한다면 모두
var activitiesStart = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == startSnapshot).ToList();
var activitiesEnd = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == endSnapshot).ToList();
그런 다음 activitiesEnd에 저장된 결과는 activitiesStart 쿼리의 결과가 될 것이다하는 ToList()를 실행합니다. activitiesEnd 쿼리를 먼저 실행하면 그 반대가 true가됩니다. 무슨 일이야? 나는 그것들이 같은 문맥이라는 것을 이해한다. 나는 그것들이 실행되기 전에 그것들을 모두 생성한다면 그것들이 어떻게 생성되는지를
이 어떻게 조합 할 수 있는지를 알 수 있다고 생각한다. 그러나 두 번째 경우에는 하나가 실행되어 다른 하나가 생성되기 전에 왜 두 번째 쿼리를 짓밟습니까? (모두 동일)
생성 SQL :
{SELECT
[Extent1].[ACTIVITY_ID] AS [ACTIVITY_ID],
[Extent1].[ACTIVITY_NAME] AS [ACTIVITY_NAME],
[Extent1].[WBS_ID] AS [WBS_ID],
[Extent1].[VARIANCE_SNAPSHOT_ID] AS [VARIANCE_SNAPSHOT_ID],
[Extent1].[DUE_DATE] AS [DUE_DATE],
[Extent1].[IS_COMPLETE] AS [IS_COMPLETE]
FROM [p6].[ACTIVITY] AS [Extent1]
WHERE [Extent1].[VARIANCE_SNAPSHOT_ID] = @p__linq__0}
예
var activitiesStart = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == 1).ToList();
var activitiesEnd = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == 2).ToList();
foreach (var item in activitiesStart)
{
Debug.Write(item.VARIANCE_SNAPSHOT_ID + " ");
}
Debug.WriteLine("");
foreach (var item in activitiesEnd)
{
Debug.Write(item.VARIANCE_SNAPSHOT_ID + " ");
}
Debug.WriteLine("");
activitiesStart 먼저 실행 되었기 때문에 이것은, 사람의 두 행을 출력한다. 스왑을하면 두 줄로 두 줄로 늘어납니다. SQL Server 프로파일 러는 쿼리가 서버에 제대로 보내 졌음을 보여줍니다.
startSnapshot 및 endSnapshot의 값은 무엇입니까? 어떻게 배정 받습니까? –
서로 영향을 줄 이유가 없습니다. 첫 번째 문장까지 디버깅 할 때 startSnapshot 및 endSnapShot의 값은 무엇입니까? – sovemp
함수에 대한 매개 변수이며, 테스트 케이스에서는 1 (시작)과 2 (끝)입니다. 나는 그 질문을 갱신 할 것이다. –