Почему считается, что у OK есть поле Id в объектах домена? Я видел несколько решений, которые предоставляют базовый класс Id и Id на основе GetHashCode/Equals.
Мое понимание модели домена заключается в том, что она должна содержать только вещи, связанные с доменом. Хотя в редких случаях (отслеживаемые заказы) идентификаторы имеют смысл, большую часть времени они не предоставляют ничего, кроме простого способа ссылки на объекты в DB/on UI.
Я также не вижу преимуществ Equals/GetHashCode, так как реализация Identity Map должна гарантировать, что ссылочное равенство равно. Идентификатор равенства в любом случае.
Странно, я не могу легко найти то, что другие люди думают по этому вопросу, поэтому я спрашиваю его здесь. Каково общее мнение об использовании идентификаторов, не связанных с доменом, в объектах домена? И есть ли какие-либо проблемы с NHibernate, если я не добавляю идентификаторы в свои объекты домена?
UPDATE:
Спасибо за ответы.
Некоторые из них предполагают, что идентификатор - единственный способ для ORM выполнить обновление БД. Я не думаю, что это так. ORM уже отслеживает все сущности, загруженные из БД, поэтому он должен легко получить идентификатор внутри, когда ему это нужно.
ОБНОВЛЕНИЕ 2:
Ответ на правосудие и аналогичные вопросы: Что делать, если у нас есть веб-приложение и нужен способ ссылки на объект между сеансами? Как edit/resource/id?
Ну, я вижу это как особую потребность в ограниченном пользовательском интерфейсе/среде, а не в необходимости модели домена. Для этого сценария достаточно иметь сервис приложений или репозиторий с методом GetIdentitity (в соответствии с методом Load (identity)).