我需要帮助找出适合这种情况的正确模式:
我有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 :(得分:0)
据我所知,RIA Services仅从您的DomainService返回实体。我做了类似的事情,我需要返回自己的结构。我通过创建一个简单的WCF服务解决了这个问题,该服务返回我的新对象以及我想要的每个列表 请记住,这些对象不在您的Entityset中,因此请勿尝试修改它们并通过RIA服务将它们发送回服务器。