我在将应用程序定义的对象列表传递给RIA服务时遇到问题。我得到一个编译错误,说“域参数'过滤器'的'错误参数'过滤''GetPagedExams'必须是预定义的可序列化类型之一。”无法将收集类作为参数传递给RIA服务
下面是在的DomainService查询:
[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();
}
过滤选项类定义为:
[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; }
}
添加DataContract和DataMember属性并没有帮助。
我需要传递可变数量的过滤约束,这些过滤约束将作为服务器端SQL查询的一部分进行汇编,因此对象列表正好是必需的。 (是的,它下面是原始的SQL,而数据库可以是SQL Server或Oracle,所以我不能使用LINQ,Silverlight客户端也不知道我使用的是哪个数据库。)
有什么建议吗?我只是想尝试从客户端传递XML序列化,并在服务器上重新提供它。这真的不是我的首选...
这是一个工作查询,当我传递一个过滤器,而不是一个集合的字符串。所以我知道这个问题严格限制在自定义集合中。
谢谢。不是我想要的答案,但它是一个答案。 – 2010-02-25 14:00:34
我完全同意(这不是包括我自己在内的许多人的回答),因为我也试过这个。该线程似乎暗示MS能够消除限制。 – Timores 2010-02-25 15:45:37
任何消息是否限制已被删除? – SteveC 2011-01-25 16:10:41