マスター/ディテール設定でエンティティの作成と編集を処理するために、人々がどのような戦略を使用しているのか疑問に思っています。(私たちのアプリは、インターネット対応のデスクトップ アプリです。)
現在これを処理する方法は次のとおりです。編集が必要なエンティティのポップアップでフォームが作成され、オブジェクトのコピーが提供されます。ユーザーが「キャンセル」ボタンをクリックすると、ウィンドウを閉じてオブジェクトを完全に無視します。ユーザーが [OK] ボタンをクリックすると、マスター ビューに通知され、編集されたエンティティが受信されます。次に、originalEntity.copyFrom(modifiedEntity) を使用して、変更されたエンティティのプロパティを元のエンティティにコピーします。新しいエンティティを作成する場合は、空のエンティティをポップアップに渡します。ユーザーはそれを既存のエンティティであるかのように編集できます。マスター ビューは、受け取ったエンティティを管理するコレクションに "挿入" するか "更新" するかを決定する必要があります。
上記のワークフローについて、いくつか質問と意見があります。
- エンティティのコピーの作成は誰が処理する必要がありますか? (マスターまたは詳細)
- copyFrom() を使用して、参照が壊れる原因となるコレクション内のエンティティを置換する必要がないようにします。これを行うより良い方法はありますか?(copyFrom() の実装は難しい場合があります)
- 新しいエンティティは -1 の ID を受け取ります (サーバー層/休止状態が挿入または更新を区別するために使用します)。これにより、(キャッシュされた) エンティティを保存する前に ID で検索するときに問題が発生する可能性があります。代わりに、新しいエンティティごとに一時的な一意の ID を使用する必要がありますか?
誰でもヒントやコツ、または経験を共有できますか? ありがとう!
編集:この質問には絶対的な間違いや正しい答えがないことを知っているので、マスター/詳細の状況を処理する方法について考えや長所/短所を共有できる人を探しています。