Тут невелика проблема
Мати сутність з об'єктом значення. Не проблема. Я замінюю ціннісний об'єкт на новий, після чого nhibernate вставляє нове значення та осиротіє старе, а потім видаляє його. Гаразд, це проблема.
Застрахована - моя особа в моєму домені. У нього є колекція адрес (об'єктів цінності). Одна з адрес - адреса MailingAddress. Коли ми хочемо оновити поштову адресу, скажімо, поштовий індекс був неправильним, дотримуючись доктрини містера Еванса, ми повинні замінити старий об’єкт на новий, оскільки він непорушний (ціннісний об'єкт правда?).
Але ми не хочемо видаляти рядок you, тому що PK цієї адреси є FK в таблиці MailingHistory. Отже, слідуючи доктрині містера Еванса, ми тут дуже сильно накручені. Якщо я не роблю свої адреси Entities, тому мені не доведеться "замінювати" його, а просто оновлювати його поштовий індекс, як і старі добрі дні.
Що б ви запропонували мені в цьому випадку? Як я бачу, ValueObjects корисні лише тоді, коли ви хочете інкапсулювати групу стовпців таблиці баз даних (компонент у nhibernate). Все, що має ідентифікатор стійкості в базі даних, краще зробити це Entity (не обов'язково сукупний корінь), щоб ви могли оновити його членів, не відтворюючи весь графік об'єкта, особливо якщо це об'єкт з глибоким вкладом.
Ви згодні? Чи дозволено містеру Евансу мати об'єкт, що змінюється? Або об'єкт змінного значення є кандидатом на суб'єкт господарювання?
Дякую