私の考えでは、ビジネスオブジェクトのIDフィールドは読み取り専用(publicgetおよびprivateset)である必要があります。これは、定義上、IDが変更されることはないためです(データベース内のレコードを一意に識別するため)。
これは、新しいオブジェクト(IDがまだ設定されていない)を作成するときに問題を引き起こします。たとえば、新しく作成されたIDを返すストアドプロシージャを使用してデータベースに保存し、IDプロパティが読み取られた場合にオブジェクトにどのように保存しますか。 -それだけ?
例:
Employee employee = new Employee();
employee.FirstName="John";
employee.LastName="Smith";
EmployeeDAL.Save(employee);
Saveメソッド(実際にデータベースに接続して新しい従業員を保存する)は、このプロパティが読み取り専用の場合(EmployeeIdが作成されると変更されないため)、EmployeeオブジェクトのEmployeeIdプロパティをどのように更新しますか。
Idは、DALによって書き込み可能であり、他の世界では読み取り専用である必要があるようです。特にDALクラスとビジネスオブジェクトクラスが異なるアセンブリにある場合、これをどのように実装しますか?
このクラスはデータベースとは何の関係もないはずなので、EmployeeクラスにSaveメソッドを作成したくありません。