2010-12-13 7 views
0

私は2つのフォーム(ウィンドウ)を使用してアプリケーションを持っている 彼らは ユーザーがデータを入力すると、プリンタが折り畳まれ、フロントバック効果を与えるために積層することができる何かを吐き出すIDカードの表裏を表す 私は前と後ろを表示するために別のビューを使用していると私は私の質問を両方の(データを印刷する前にDBに保存する必要があります)同じViewModelインスタンスを使用すると思います または私はこれをすべて間違っていると私は(私は本当にそれが嫌いです) ありがとうMVVMデザイン質問

答えて

0

ViewModelの仕事はprであるので、Viewごとに1つのViewModelが必要になります添付されているビューに必要なデータを正確に取得します。

あなたのケースでは、前面に1つのViewModelと背面に1つのViewModelが必要です。

ユーザーがフォームを送信したときにデータを保存する方法はいくつかあります。一般的なパターンは、各データベーステーブルのリポジトリクラスを設定することです。リポジトリクラスは通常、データの選択、挿入、更新、および削除を可能にします。したがって、必要なリポジトリを各ViewModelに渡すことができます。その後、ユーザーがサブミットするときにViewModelにリポジトリにデータの挿入または更新を指示させます。

+0

DBスキーマでは、前と後が同じ行になっているので、リポジトリの前と後の値をマージするIDに基づいて提案しています。 – Rahul

+0

@ Rahul、私はあなたのテーブルのすべてのデータを保持するために "エンティティクラス"を作成することをお勧めします。このクラスは、各列に対応する1つのプロパティを持つ必要があります。新しい前後のViewModelを作成するときは、エンティティクラスの新しいインスタンスを渡すだけです。 2つのViewModelはエンティティクラスの1つのインスタンスを共有するため、ユーザーがデータを入力すると、このインスタンスはフォームの両側のすべてのデータを保持します。次に、送信するときに、エンティティクラスをリポジトリに渡し、Insert()を実行するだけです。 – devuxer

+0

私は共有エンティティの提案が好きですDanありがとう – Rahul

関連する問題