2011-08-03 87 views
1

我需要一些幫助找出正確的模式對於這種情況的多個列表:的Silverlight 4個RIA wcf-返回複雜的對象

我有5個層疊組合框的視圖。當您從第一個組合框中選擇一個值時,會進行服務調用以獲取下一個組合框的結果,然後啓用該組合框。用戶進行下一個選擇並繼續處理。這工作正常。接下來,我給出了用戶返回到此視圖的情況,其中已經選擇了數據,並且每個組合框中已經填充了適當的數據。

我不想讓所有的調用一個接一個地得到數據,這看起來很浪費。相反,我想打一個電話,並一次返回所有數據。 使用RIA WCF服務,實現此目的的最佳方法是什麼?

這是我試過的,但它沒有按照我的希望工作。

A)我在服務器側進行的一類,則增加了一個方法到服務返回此類型

public partial class SelectionValues 
{ 
    public List<Series> SeriesList {get;set;} 
    public List<BaseModel> BaseModelList {get;set;} 
    public List<FullModel> FullModelList {get;set;} 
    public List<Program> ProgramList {get;set;} 
    public List<ExtendedWarranty> ExtendedWarrantyList{get;set;} 
} 

[in the service] 
/// <summary> 
/// This function does nothing, just exposes the SelectionValues type 
/// </summary> 
/// <returns></returns> 
public IQueryable<SelectionValues> getUnitSelectionValues() 
{ 
    throw new NotImplementedException(); 
} 

結果:在客戶端上所產生的列表中的無。

B)所以我將.Shared.cs文件添加到類文件中,所以類在客戶端是相同的。然後我編寫了Service方法來返回我需要的數據。代碼有效,但SelectionValues對象中的列表中的數據不會傳遞給客戶端。

[Invoke] 
public SelectionValues GetValuesForExistingUnit(.....) 
{ 
    SelectionValues result = new SelectionValues(); 
    ... 
    return result 
} 

有沒有辦法立刻返回複雜對象的多個列表,或者我註定做鏈接在一起的多個呼叫?

回答

0

對於我所知道的RIA服務只會從您的DomainService中返回實體。我做了類似的事情,我需要返回我自己的結構。我通過創建一個簡單的WCF服務來解決該場景,該服務返回我想要的每個列表中的新對象。
請記住,這些對象不在您的Entityset中,因此不要試圖修改它們,並通過RIA服務將它們發送回服務器。