我在將應用程序定義的對象列表傳遞給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