2010-12-27 7 views
0

DomainServiceを継承するクラスを作成し、System.ServiceModel.DomainServices.Clientを使用してDomainContextを取得するSilverlightアプリケーションを作成しました。また、DomainServicesのQuery、Update、Insert、およびDeleteメソッドで使用されるPOCO DataContractsを作成しました。私はまた、すべてのLoadOperationsを実行するViewModelを持っています。そして今、私は生成されたEntitySetsに新しいエンティティを追加したいが、あるユーザが新しいものを作成してKey値を設定したときに何が起きるかは不明です。すべてのユーザーが同じKey値を持つ類似のエンティティを作成します。カスタムDomainServiceとの同時実行

ドキュメントではObjectContextが使用されていますが、自分の状況ではEntityFrameworkモデルジェネレータを使用できませんでした。だから私は手作業でデータ収集を作成しなければならなかった。

私の質問は、他のSilverlightアプリケーションをデータベースの変更時に強制的に更新できる方法はありますか?

+0

EDIT:簡単な質問...上記のように、私はDomainServiceから継承したカスタムDomainServiceを持っています。 DomainContextを "リフレッシュ"する方法はありますか? – jhorton

答えて

0

ロード操作によっては、DomainContextに保存操作を行うと自動的に更新されます。

TicketContext.Load(TicketContext.GetTicketByIdQuery(ticketId), 
             LoadBehavior.RefreshCurrent, 
             x => 
             { 
              Ticket = x.Entities.First(); 
              Ticket.Load(); 
              ((IChangeTracking) TicketContext.EntityContainer).AcceptChanges(); 
             }, null); 

ここでは、LoadBehaviorをRefreshCurrentに設定しました。保存すると、RIAはエンティティをクライアントに送信し、クライアント側のコンテキストですでにキャッシュされているエンティティに変更をマージします。それがあなたの質問にかなり答えるかどうかはわかりません。

+0

通常の状況では、エンティティデータモデルジェネレータは使用できませんでした。だから、私はLinqToEntityで使用するObjectContextを持っていなかったので、欠落している機能の多くを作成する必要がありました。しかし、その答えは私がそれをマークする質問に答えるようだから。助けてくれてありがとうChris。 – jhorton

+0

@jhortonここではObjectContextを使用しません:-) ThiはEFのものではありません。これは、Entity Frameworkとは独立したRIAの仕組みです。サーバー側またはEF上でADO.NETとPOCOを使用している場合でも、問題はありません。振る舞いは同じです.RIAはクライアントに変更を送り返し、それらをマージします(RefreshCurrentを設定している場合)。わかったように、EFを使用していない場合は、自分で多くの作業を行う必要があります:-)私は今、サーバー側でPOCOとADO.NETを使っていくつかのプロジェクトを行っています。 RIAがデータに何を期待しているかを理解したらそれほど悪くはありません。 –