2012-11-09 4 views
1

저는 wcf ria로 silverlight 5를 사용하는 시스템을 개발하기 시작했습니다. 저는 Visual Studio 2010을 사용하며 코드는 시각적으로 기본입니다. 내 신청서에는 표가 있습니다 guiasidiomas. 내가 도메인 서비스엔티티가있는 Linq

Public Function GetGuiasIdiomas(ByVal idProcurado As String) AsIQueryable(Of GuiasIdioma) 
    Return Me.ObjectContext.GuiasIdiomas.Where(Function(c) (c.idGuia).ToString = idProcurado) 
End Function 

에 의해 생성 된 쿼리 getguiasidiomas를 변경 응용 프로그램에서

  • Ididioma
    • 아이디
    • Idguia : 그것은 매우 간단한 테이블입니다 주어진 idguia로 필터링하기 위해 어디를 삽입 했습니까? 문제가있는 쿼리입니다. 도와 주시면 감사하겠습니다. 내가 쿼리를 실행하면 내가 얻을 :

      SCRIPT5022 : 실버 라이트 응용 프로그램에서 처리되지 않은 오류가 코드 : 4004
      카테고리 : ManagedRuntimeError
      메시지 : System.ServiceModel.DomainServices.Client.DomainOperationException :로드 작업이 쿼리 실패 'GetGuiasIdiomas'. LINQ to Entities는 'System.String ToString()'메서드를 인식하지 못하고이 메서드를 저장소 식으로 변환 할 수 없습니다.

    답변

    0

    오류 메시지가 표시되면 엔티티에 대한 linq는 ToString을 지원하지 않습니다. 문자열 목록을 엔티티에 linq와 함께 사용하기 전에 준비 할 수 있습니다.

    1

    Linq-to-Entities는 .ToString()을 SQL로 직접 변환 할 수 없으므로 WHERE 절에서 사용할 수 없습니다.

    1. 가와 객체 목록에 대해 비교하고 (예를 들어, .AsEnumerable()를 호출하여) idGuia과 같은 데이터 형 idProcurado 변환하고 데이터베이스에서 직접
    2. 풀 모든 개체를 비교 : 다음 두 가지 옵션이 있습니다.

    1) 추측하겠습니다. 1) 적은 수의 엔티티 만 되돌리려면 성능이 향상 될 것입니다.

    관련 문제