По моему мнению, поле идентификатора бизнес-объекта должно быть доступно только для чтения (общедоступное получение и закрытое множество), поскольку по определению идентификатор никогда не изменится (поскольку он однозначно идентифицирует запись в базе данных).
Это создает проблему, когда вы создаете новый объект (идентификатор еще не установлен), сохраняете его в базе данных с помощью хранимой процедуры, например, которая возвращает вновь созданный идентификатор, а затем, как сохранить его обратно в объекте, если идентификатор свойство только для чтения?
Пример:
Employee employee = new Employee();
employee.FirstName="John";
employee.LastName="Smith";
EmployeeDAL.Save(employee);
Как метод Save (который фактически подключается к базе данных для сохранения нового сотрудника) обновляет свойство EmployeeId в объекте Employee, если это свойство доступно только для чтения (что должно быть, так как EmployeeId никогда не изменится после создания ).
Похоже, что идентификатор должен быть доступен для записи DAL и доступен только для чтения для остального мира. Как это реализовать, особенно если классы DAL и классы бизнес-объектов находятся в разных сборках?
Я не хочу создавать метод Save в классе Employee, поскольку этот класс не должен иметь ничего общего с базой данных.