4

SilverlightアプリケーションのデータにWCF RIAサービスを使用してアクセスしたいと考えています。ただし、データはローカルデータストレージからではなく、別のWCFデータサービスから提供されます(私は外部CRMシステムにアクセスしています)。 RIAサービス内のいくつかのデータソースからデータをマッシュアップする必要があるため、外部サービスに直接アクセスする必要はありません。Entity Frameworkを使用してWCF RIAサービスから別のWCFデータサービスを呼び出す

これは可能ですか?これを達成する最も簡単な方法は何ですか? C#の一部のソースコードは高く評価されます。

EDIT: 主な問題は、外部サービスから簡単にエンティティを埋め込む方法です。 related questionがありますが、答えが私の問題を解決するわけではありません。

答えて

2

RIAサービスを追加するためのVisual Studioウィザードが、データ用にEntityFrameworkを使用することを前提とすると、混乱している可能性があります。私は、2番目のWCFサービスからのデータからEFモデルを作成したいとは思わない。代わりに、RIAサービスを作成してDomainServiceから直接派生し、必要なメソッドをオーバーライドします。各クエリメソッドで、単にリモートサービスにクエリを実行し、その結果をSilverlightクライアントに返します。 RIAサービスのマジックコード生成を動作させるには、リモートWCFサービスの結果をラップするDTOオブジェクトのセットをアプリケーションに定義する必要があります。

ここは簡単なサンプルです。注 - 私はこれを作って、私が意味することを説明しました。あなたは、あなたを助けことを願ってい

namespace YourApp.Web 
{ 
    [EnableClientAccess] 
    public class WcfRelayDomainService : DomainService 
    { 
     public IQueryable<Restaurant> GetRestaurants() 
     { 
      // You should create a method that wraps your WCF call 
      // and returns the result as IQueryable; 
      IQueryable<MyDto> mydtos = RemoteWCF.QueryMethod().ToQueryable(); 
      return mydtos; 
     } 
     public void UpdateDTO(MyDto dto) 
     { 
      // For update or delete, wrap the calls to the remote 
      // service in your RIA services like this. 
      RemoteWCF.UpdateMethod(dto); 
     } 
    } 
} 

など、使用している実際のサービスへの呼び出し中に入れて、エラー処理を構築し、入力チェックをする必要があります!いくつかのヒントについては、 How to set up RIA services with Silverlight 4.0 and without EFを参照してください。

+0

これはかなり有望ですが、ありがとうございます。 – slfan

関連する問題