1

こんにちはみんなWCFRIAサービスを使用しています私はこのメソッドを書いたドメインサービスを持っています

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

クライアント側でこのリストを取得するにはどうすればよいですか?これは機能しません:

List<int> = db.GetActionIDs();

助言がありますか?

4

2 に答える 2

1

まず、RIAサービスのマニュアルを読む必要があります。これは、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);
于 2011-11-30T08:08:12.893 に答える
0

DomainService 内

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

シルバーライト

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

LoadOperation.Completed += new EventHandler((s,e)=>{
   foreach (Action item in LoadOp.Entities)
   {
   }
});
于 2011-11-30T07:17:26.057 に答える