2012-01-27 16 views
0

WCF RIAサービスは常に強い型、つまりIEnumerable IQueryableを返します。今、私たちのシナリオでは、各データグリッドを含むクライアント側の6つのペインが自分であるということですと、これらすべてのデータグリッドがWCF RIAサービスまたは匿名型を動的に返すw

Product 
    | 
    |-Orders 
     |   
     |- and so on 

すなわち3つのレベルの階層が含まれている事は、我々は、データベース内の特定のテーブルのスキーマを持っており、詳細があるということです

表名PanesInfo

ID PaneName TableName TableColomn  Level Type 
1 PaneOne Products ProductID  1 
2 PaneOne Products ProductName  1 
3 PaneOne  Orders OrderID   2 
4 PaneOne  Orders OrderName  2 
5 PaneONE  Orders ORderRef   2 

は、次のように同様に彼らはレベル2を定義していますと、このテーブルは、すべてのペインのための情報が含まれています今、ユーザーが最初に何に関する情報を取得するには、このテーブルを照会する必要がありますレベル1のレベルグリッドとレベル3のようなペイントのデータグリッドに表示される必要があります(親子関係)。これらのレベル間の関係もここで言及されます。私たちは今、多くのソリューションを試してきました。 xml parsing)このデータベースは非常に重いので、サーバー側では反復回数が少ないソリューションを提案してください。

答えて

0

IMOでは、データの点ではあまりにも多くのことを考えています。また、非同期メソッドを考える必要があります。つまり、画面が更新されている間に何かが起きる可能性があります。あなたの画面が顧客に何か良いものになる前に、最初の製品グリッドを塗りつぶす必要があります。商品を選択すると、注文などをチェーンの下に記入する必要があります。

最初のクエリでは、製品のみを取得するようにしてください。製品がクライアントに到着したら、最初の製品をつかみ、その製品の詳細情報をDBに要求します。次に、UIのプロパティを上げてUIを更新します。商品グリッドが新鮮になっている間、DBリクエストはオフになっており、その1つの商品(注文など)に関する詳細情報が収集されます。それ(Orders)が到着すると、それは他のグリッドに移ります。ユーザーには、すべてのデータが同時に到着するように見えます(製品グリッドにバインドするには時間がかかります)。

クライアントが別の製品をクリックするたびに、そのデータを取得するDBに。クライアントが前回クリックした製品をクリックした場合、その製品データはすでにクライアント側にあり、dbのトリップを行う必要はありません。あなたがDBに行くかどうかは、あなたが実装しなければならないロジックです。

データを複数回リクエストすると、RIAはDBから受信したばかりのデータをクライアントサイドモデルにマージすることでこれを処理します。デフォルトモードでは、クライアント側で変更されたデータは上書きされません。データがクライアント側で既に終了している場合は、データも無視されます。

これはクライアントサーバーではありません。サーバーからクライアントにデータを転送しています。クライアント側のモデルと、サーバー側のクライアント/サーバーモデル(これはEFの部分です)があります。 RIAサービスはデータの転送を管理するだけでなく、サーバー側にあるモデルと同一のクライアント側モデルを提供します。

HTH、 リチャード

0

私は質問が少しも曖昧である信じ、それだけでその情報とソリューションを定義することは不可能です。
しかし、IncludeAttributeを見れば、クライアントの往復を減らしてオブジェクトグラフを直列化することができます。
もちろん、それはあなたが多くのデータクライアント側を運んでいることを意味します。しかしそれは別の話題です。

関連する問題