1

WPF プロジェクトで WCF サービス参照を使用しており、エンティティ フレームワーク データ モデルは WCF プロジェクトにあります。

そして、MVVM Light フレームワークを使用しています。私は次のことをしています:

  1. サービスで LINQ を使用してデータを取得し、通常は WPF の obersvablecollections から取得します。
  2. 必要に応じて、データグリッドやビューを設定するなど、すべてがビュー部分で機能します。

しかし、次の疑問があります。

  1. wcfとwpfの間でデータを転送するこの正しい方法はありますか?
  2. モデルをまだ使用したことがありません。いつ使用するか疑問に思っていますか?
  3. また、データグリッドからデータを保存したかったのです。datagrid の更新されたデータの observablecollection をサービスの関数に渡すことができました。しかし、このコレクションからエンティティを更新するにはどうすればよいですか? ループで?正しく聞こえません。このコレクションからエンティティを更新すると、saveChanges を使用してデータベースに更新できるようになります。
  4. ツリービューで階層データを表示する必要がある場合、そのデータをストアド プロシージャ xml から階層化する場所は? ビューを使用してグループ化基準列を作成する サービスでこの列を作成しますか? プレゼンテーションでこの列/プロパティを作成しますか?
4

1 に答える 1

1

1 - 正しい方法はありません。要件と目標によって異なります。

2 - MVVM では、モデルは WPF とデータベースの間に配置する必要があります。つまり、データベースへのすべての呼び出しはモデルを通過する必要があり、データベースへのすべての書き込みもモデルを通過する必要があります。WPF GUI はモデルにのみバインドする必要があります。これは通常、WPF 部分がほとんど XAML コードで構成されていることを意味します。データベースにアクセスするすべてのコードは、モデル内にある必要があります。

これを分離するのには十分な理由があります。

  • モデルに単体テストを書くことができます。
  • ビュー モデルは、GUI の外観から独立しています。これは、さまざまなコンポーネントをドロップしてモデルにバインドするだけで、GUI を簡単に変更できることを意味します。
  • Google で簡単に検索すると、さらに多くの理由が見つかる可能性があります。

3 - 変更されたエンティティのみを送信しようとします。これを行うには、コレクションをビュー モデルに渡し、ビュー モデルに何が変更されたかを把握させます。

4 - あなたが何をしたいのかよくわかりません。通常、TreeView を作成するには、ビュー モデルごとに HierarchicalDataTemplate を作成する必要があります。TreeView コントロールが残りの処理を行います。頭を包み込むのはちょっと難しいので、これについては実際にいくつかのチュートリアルを行う必要があります。

于 2010-12-21T16:29:50.167 に答える