他の人が次のシナリオにどのように対処するかを学びたいです。
これは宿題やいかなる種類の課題でもありません。サンプルクラスは、私の質問をよりよく説明するために作成されましたが、フィードバックが必要な実際のシナリオを反映しています。
データベースからすべてのデータを取得し、それをオブジェクトに配置します。オブジェクトは単一のレコードを表し、データベースに複数のレコードが存在する場合は、データをレコードオブジェクトのList<>に配置します。
次のクラスがあるとしましょう。
public class Employee
{
public bool _Modified;
public string _FirstName;
public string _LastName;
public List<Emplyee_Address> _Address;
}
public class Employee_Address
{
public bool _Modified;
public string _Address;
public string _City;
public string _State;
}
わかりやすくするために、ゲッターとセッターはクラスから省略されていることに注意してください。コード警察が私にそれらを使用していないと非難する前に、この例のためだけに省略されていることに注意してください。
データベースには、従業員用のテーブルと従業員アドレス用のテーブルがあります。
概念的には、データベーステーブルのデータを表すListオブジェクトを作成します。このオブジェクトのディープクローンを作成し、それをフロントエンドのコントロールにバインドします。次に、データベースからのデータを表す2つのオブジェクト(OrigとFinal)があります。
次に、ユーザーはレコードを作成、変更、削除することにより、「Final」オブジェクトに変更を加えます。次に、これらの変更をデータベースに永続化します。
明らかに、私たちは可能な限りエレガントになりたいと思っています。それを必要とするレコードを編集、作成、削除するだけです。
最終的には、2つのListオブジェクトを比較して、次のことができるようにします。
変更をデータベースに永続化できるように、どのプロパティが変更されたかを確認します。
これらのレコードをデータベースから削除できるように、2番目のリスト<>に存在しなくなったプロパティ(レコード)を確認します。
データベースにこれらを作成できるように、新しいList<>にどのような新しいプロパティが存在するかを確認します。
誰が私たちがこれを最もよく達成できるかについてボールを転がしたいと思っています。トップレベルのプロパティだけでなく、変更を確認するためにEmployee_Addressリストにもドリルダウンする必要があることに注意してください。
私は自分自身を明確にし、提案を楽しみにしています。