silverlight 4 ria wcf-返回多个复杂对象列表

时间:2011-08-03 16:18:57

标签: silverlight-4.0 wcf-ria-services

我需要帮助找出适合这种情况的正确模式:

我有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
}

有没有办法一次性返回多个复杂对象列表,或者我注定要将多个调用链接在一起?

1 个答案:

答案 0 :(得分:0)

据我所知,RIA Services仅从您的DomainService返回实体。我做了类似的事情,我需要返回自己的结构。我通过创建一个简单的WCF服务解决了这个问题,该服务返回我的新对象以及我想要的每个列表 请记住,这些对象不在您的Entityset中,因此请勿尝试修改它们并通过RIA服务将它们发送回服务器。