如何从域服务</int>返回List <int>

时间:2011-11-29 19:39:50

标签: silverlight wcf wcf-ria-services domainservices

大家好我正在使用WCF RIA服务我有域服务,我写了这个方法

public List<int> GetActionIDs() 
    {
        return (from d in ObjectContext.actions select d.id).ToList();
    }

如何在客户端获取此列表? 这不起作用:

List<int> = db.GetActionIDs();

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

首先,您应该阅读RIA Services manual,因为您没有意识到Silverlight中的服务调用是异步的。

在你的情况下,你应该

InvokeAttribute添加到服务中的操作:

[Invoke]
public List<int> GetActionIDs() 
{
    return (from d in ObjectContext.actions select d.id).ToList();
}

然后,对DomainContext的所有调用都是异步的,因此您可以在回调中获得结果:

db.GetActionIDs(operation =>
                {
                  //TODO: check the operation object for errors or cancellation

                  var ids = operation.Value; // here's your value

                  //TODO: add the code that performs further actions
                }
                , null);

答案 1 :(得分:0)

在DomainSrvice内部

[Query]    
public List<Action> GetActionIDs()     
 {         
   List<Action> result =  (  
                           from a in ObjectContext.actions                                     
                            select new action                                   
                             {                        
                                ID = a.ID
                             }
                        ).ToList(); 
   return result ;
 }

Silverlight

DomainService1 DS = new  DomainService1();
LoadOperation<Action> LoadOp = Ds.Load(Ds.GetActionIDsQuery());

LoadOperation.Completed += new EventHandler((s,e)=>{
   foreach (Action item in LoadOp.Entities)
   {
   }
});