在我看来,业务对象的 ID 字段应该是只读的(公共获取和私有集),因为根据定义,ID 永远不会改变(因为它唯一地标识了数据库中的一条记录)。
当您创建一个新对象(尚未设置 ID)时,这会产生一个问题,例如通过一个存储过程将其保存在数据库中,该过程返回新创建的 ID,那么如果读取了 ID 属性,您如何将其存储回对象中-只要?
例子:
Employee employee = new Employee();
employee.FirstName="John";
employee.LastName="Smith";
EmployeeDAL.Save(employee);
如果该属性是只读的,Save 方法(实际上连接到数据库以保存新员工)如何更新 Employee 对象中的 EmployeeId 属性(这应该是因为一旦创建,EmployeeId 就永远不会改变)。
看起来 Id 应该可以由 DAL 写入,并且对于世界其他地方是只读的。如果 DAL 类和业务对象类位于不同的程序集中,您将如何实现这一点?
我不想在 Employee 类中创建 Save 方法,因为这个类应该与数据库无关。