1

ユーザーが入力するフォームがあり、この情報がデータベースに保存されるシステムを開発しています。画面の1つに、次のフローがあります。

  • プロジェクト内で、彼は複数の注文を追加できます。
  • 追加された各注文は、注文の内部情報を設定できる構成画面を開きます。また、商品の追加注文も可能です。
  • 追加された各項目は、ユーザーが内部情報を設定できる構成画面を開きます。

要約すると、フローは Project -> Order -> Item です。「A -> B」は、A に 0 個、1 個、または複数の B が含まれていることを意味します。

このプロジェクトは、WPF と Entity Framework を使用してデータベース アクセスを管理するために開発されています。エンティティ データベース マッピングからエンティティを画面に直接バインドしています。このように、null ではないフィールドは赤く塗られるなど、WPF にはいくつかの「利点」があります。さらに、コードははるかに単純です。エンティティは、プロジェクトが保存されたときにのみデータベースに更新 (または追加) されます。したがって、アイテムを編集してから注文を編集することができます。アイテムは保存されるプロジェクト ID に依存しているため、プロジェクトが保存されるときにのみ保存されます。

ただし、マップされたエンティティを直接使用することには大きな問題があります。ユーザーが Order 内の Item を編集するとします。次に、もう一度編集しますが、今度はユーザーが「OK」を押す代わりに「キャンセル」を押します。変更を元に戻す必要があります。ただし、データベースで更新されず、WPF バインディングのために変更されたため、以前の状態は失われました。

この問題を防ぐ最善の方法は何ですか? クローンの作成が Entity Framework でうまく機能するかどうかはわかりません。また、確認コマンドがクリックされたときにのみ値をオブジェクトに転送する変数を作成すると、MVVM パターンに反することになり、既に説明した「利点」を失うことになります。

私を助けてください!

ありがとう!

4

0 に答える 0