2010-02-24 3 views
1

RIA 서비스에 응용 프로그램 정의 개체 목록을 전달하는 데 문제가 있습니다. "오류 매개 변수 '필터'도메인 작업 항목 'GetPagedExams'미리 정의 된 serializable 형식 중 하나 여야합니다 컴파일 오류가 나타납니다."은 RIA 서비스에 매개 변수로 컬렉션 클래스를 전달할 수 없습니다.

[Query] 
public IQueryable<ExamEntity> GetPagedExams(int first, int pageSize, List<FilterOptions> filters, List<string> sortDescriptions) 
{ 
    return Context.Exams.GetPagedExams(first, pageSize, filters, sortDescriptions).Data.AsQueryable(); 
} 

필터 옵션 클래스는 다음과 같이 정의된다 :

는 여기에 DomainService에서 쿼리 년대 DataContract를 추가

[DataContract] 
[Serializable] 
public class FilterOptions 
{ 
    public enum FilterAction 
    { 
     Equals, 
     NotEquals, 
     LessThan, 
     LessThanOrEquals, 
     GreaterThan, 
     GreaterThanOrEquals, 
     Like, 
     NotLike, 
     IsNull, 
     IsNotNull 
    } 

[DataMember] 
[Key] 
public string FieldName 
{ get; set; } 

[DataMember] 
public FilterAction FilterOp 
{ get; set; } 

[DataMember] 
public object FieldValue 
{ get; set; } 

}

및 DataMember를 도움이되지 않았다 속성.

서버 측에서 SQL 쿼리의 일부로 조합되는 다양한 필터링 제약 조건을 전달해야하므로 개체 목록이 필요합니다. (예, 원시 SQL 밑에 SQL Server 나 Oracle이 될 수 있으므로 LINQ를 사용할 수없고 Silverlight 클라이언트는 사용하는 데이터베이스를 알 수 없습니다.)

제안 사항이 있습니까? 나는 클라이언트에서 XML 직렬화를 전달하고 서버에서 다시 직렬화하려고 시도하고있다. 그게 내 선호하는 옵션이 아니야.

이것은 컬렉션이 아닌 필터에 단일 문자열을 전달할 때 작동하는 쿼리였습니다. 따라서 문제는 사용자 지정 컬렉션과 관련이 있습니다.

답변

0

현재 RIA Services의 제한 사항 인 것으로 보입니다. 살펴보기 MSDN forum

편집 : 다른 프로젝트에서이 문제가 다시 발생했습니다. 해결 방법이 없으면 [Invoke] 메서드를 사용하면 List 매개 변수를 사용하고 IEnumerable<X>을 반환 할 수 있지만 RIA 서비스는 X의 탐색 속성을 되돌려 보내지 않습니다.

+0

감사합니다. 내가 원했던 대답은 아니지만 대답 일뿐입니다. –

+0

나는 이것도 시도 했으므로 나는 완전히 동의한다. (나 자신을 포함한 많은 사람들의 대답이 아니다.) 스레드는 MS가 제한을 제거 할 수 있음을 암시하는 것 같습니다. – Timores

+0

모든 뉴스가 제한이 제거되었는지 여부? – SteveC

관련 문제