大家好我正在使用WCF RIA服务我有域服务,我写了这个方法
public List<int> GetActionIDs()
{
return (from d in ObjectContext.actions select d.id).ToList();
}
如何在客户端获取此列表? 这不起作用:
List<int> = db.GetActionIDs();
有什么建议吗?
答案 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)
{
}
});