2011-03-03 32 views
2

我將Silverlight 4與WCF RIA Services(使用EF4的域服務)結合使用。現在我想添加一個功能,它允許用戶根據用戶選擇的標準(ad-hoc查詢)來查詢數據。我發現:使用WCF RIA Services進行動態查詢

-WCF RIA Services不允許匿名類型,所以linq投影是不可能的。

-由於您無法在客戶端過濾數據,所以OData無法提供幫助(很多)。

搜索互聯網,看來我可以使用下面的鏈接描述動態LINQ庫:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

總之,上面的鏈接顯示瞭如何搜索謂詞傳遞到服務器,並在執行查詢服務器端。 但是如何返回任意數據?匿名類型不能傳遞,我不希望用戶檢索所有數據,但只有用戶選擇的字段。也許我應該在域服務中序列化我的實體數據並將其作爲原始xml傳遞?可能嗎?如果是這樣,我該怎麼做?

+0

我不完全理解,可你只需要添加一個號碼爲空的查詢參數到您的DomainService類,並將其傳遞給服務? – 2011-03-03 17:31:32

回答

1

對於我們的場景之一,我們有它返回的XML字符串一個的DomainService操作時,它看起來是這樣的:

public IQueryable<WidgetInfo> GetWidgetList() 
{ 
    IList<WidgetInfo> widgets = WidgetDatabase.GetWidgets(userId); 
    return widgets.AsQueryable(); 
} 

其中WidgetInfo看起來是這樣的:

public class WidgetInfo 
{ 
    [Key] 
    public int Id; 
    public string Title; 
    public string WidgetData; // Contains XML description of data 
}