2013-04-12 1 views
1

OData에서이 코드를 사용할 수 있습니까?oData의 where 절

IQueryable<CallLogInfo> CallLogInfos = _callCenterServiceAccessor.CallLogInfos.Where(x => x.LogId == logid); 
      var log = CallLogInfos.ToList(); 
      return log.Any(); 

나는 그것이 생성 된 내 요청을 확인하고 나는 이것을보고 :

http://services/CallCenter/CallCenterDataService.svc/CallLogInfos(1364974501.4) 

그래서이 오류를 얻을 :

<m:message xml:lang="en-US">Resource not found for the segment 'CallLogInfo'.</m:message> 

을하지만 수동으로 요청 URL에 대한 요청을 할 때 :

http://services/CallCenter/CallCenterDataService.svc/CallLogInfos 

ok.

답변

3

내가 아는 한 귀하의 코드와 같은 요청이 가능해야합니다. LOGID 당신의 키 열 중 하나로, OData 서비스가 있다고 가정

, 코드

CallLogInfos.Where(x => x.LogId == logid); 

요소를 얻을 수있는 표준 구문입니다
http://services/CallCenter/CallCenterDataService.svc/CallLogInfos(logid) 

에 하나로, OData 서비스에 의해 내부적으로 변환됩니다 특정 이드와 함께.

표시되는 오류 메시지가 표시됩니다. Id에 대한 쿼리가 목록에서 항목을 찾지 못한다면 입력 한 ID가 정확한지 확인 했습니까?

귀하의 하나로, OData 서비스 어쩌면, 내가 만든 테스트에서

, 당신 같은 쿼리가하는 일 (즉, 문제가있는 경우, 당신은 서비스 컨텍스트 (see MSDN)의 IgnoreResourceNotFoundException 속성을 설정하여이 동작을 해제 할 수 있습니다) 구현에 오류가 있습니까?

LinqPad과 같은 도구를 사용하여 코드와 서비스를 시험해 볼 수 있습니다.