4

В доменном дизайне модель домена должна быть полностью без ведома каких-либо постоянных данных.Внешние свойства ключа в объектах домена

Предположим, что 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.

+0

Проблема здесь состоит в том, что вы повторно использовать первичный ключ (концепция базы данных) в качестве идентичности объектов в модели предметной области. Сущности должны обладать естественной/суррогатной идентичностью, определенной в модели - это может быть, например, ориентиром. Это будет использоваться для запроса репозитория. Идентификатор строки базы данных - это всего лишь деталь реализации платформы персистентности. – MattDavey

ответ

2

Жизнь легче в Entity Framework, если вы используете внешние ключи:

Why does Entity Framework Reinsert Existing Objects into My Database?

Making Do with Absent Foreign Keys

И вы абсолютно правильно сказать, что внешний ключ не является на самом деле относятся к модели предметной области , Это часть модели сохранения.

Итак, вам нужно решить, к какому лагерю присоединиться. Вы пурист или прагматик? Отдельные модели домена и модели сохранения или нет?

ORM Entities vs. Domain Entities under Entity Framework 6.0

+0

Почему «не имеет значения» для модели домена? Я вижу, почему FK специально не подходит, поскольку это проблема сохранения. Но в реальном мире есть определенная связь между Employee & Department. Ключевой принцип DDD отражает точность домена в модели. Поэтому я ожидаю увидеть что-то в модели для представления отношений. Разве FK не является производным артефактом отношения? – sfinnie

+0

извинения, мне удалось пропустить свойство «Департамент» в коде. Без этого мне не хватало того, как rel будет моделироваться с учетом отсутствия FK. Теперь имеет смысл, извините за шум. – sfinnie

Смежные вопросы