클라이언트에 내가 소비하는 방법 작성 :
SRTDBEntities es = new SRTDBEntities(_serviceRoot);
return es.vBeheer.Where(b =>
b.TrackID == trackid &&
b.PersoonID == CurrentPersoon.ID);
그러나 내가 발견 (디버깅의 오후 후) 식에
.ToList()를 추가 할 때을의
결과 집합은를 손상 간다. 항목의
Count()
이 정확하고 예상대로이지만 항목의 값이 잘못되었습니다. 많은 것은
중복이고 많은 것은
이 누락되어 (분명히)입니다.
그래서 내가 linqpad이 테스트 : :
vBeheer.Where (b => b.TrackID==23 && b.PersoonID == 19 ).Dump();
- 반환 올바른 결과가 예상대로 서비스 FOM, ID 는 "행"당 고유 값을 지정할 수 있습니다
하지만 .ToList를 추가 할 때이 많은 중복 된 결과
vBeheer.Where (b => b.TrackID==23 && b.PersoonID == 19 ).ToList().Dump();
()가 잘못되면 (어떤 패턴없이?)를 항목
이 문제가 예기치 않은 원치 않는 것입니다. 그리고 훨씬 더 흥미 롭습니다. 우리는 결과가 여전히 정확한 서버를 (웹 서비스에서) 디버깅 할 때 데이터베이스가 올바른 결과를 반환하지만 클라이언트에 도착하면 오류가 심각하게 발생한다고 판단했습니다.
IT는 문제가되지 않지만 데이터는 ToList()를 수행하는 DevExpress 구성 요소 (DXGrid)에서 사용됩니다.
주의 : 브라우저에서 쿼리를 실행 :
http://localhost:52671/SRTDataService.svc/vBeheer()?$filter=TrackID%20eq%2023%20and%20PersoonID%20eq%2019
는 고유 항목의 예상 집합을 반환합니다.
이것은 대개 고유하지 않은 키 열 (EF 모델에서)이있는 뷰를 보유하고 있음을 나타냅니다. 'ToList()'가있는 것과없는 차이는 예상하지 못합니다. –
당신은 그 대답을 할 수 있습니까? 아놀드, 나는 그것을 검사했고, 실제로 edmx를 재생성 한 후에, 키는 어떻게 든 변경되었습니다. 나는 그것을 고쳤다. .. –