В доменном дизайне модель домена должна быть полностью без ведома каких-либо постоянных данных.Внешние свойства ключа в объектах домена
Предположим, что Employee
принадлежит к Department
. Субъекты домена могут выглядеть следующим образом:
public Employee
{
public string EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName{ get; set; }
public Department Department { get; set; }
public int DepartmentId { get; set; }
}
public Department
{
public string DepartmentId { get; set; }
public string Name{ get; set; }
}
Является Employee.DepartmentId
действительно актуален в модели предметной области или в том, что в деталях хранение инфраструктуры?
Несомненно, Employee.Department
- это отношения, имеющие значение на этом уровне?
В моем случае эти объекты будут храниться в базе данных SQL, и данные будут получены Entity Framework, поэтому в базе данных будет находиться столбец Employee.DepartmentId
.
Проблема здесь состоит в том, что вы повторно использовать первичный ключ (концепция базы данных) в качестве идентичности объектов в модели предметной области. Сущности должны обладать естественной/суррогатной идентичностью, определенной в модели - это может быть, например, ориентиром. Это будет использоваться для запроса репозитория. Идентификатор строки базы данных - это всего лишь деталь реализации платформы персистентности. – MattDavey