Предположим, что мое WinForms приложение имеет бизнес-сущность Order, сущность используется в нескольких представлениях, каждое представление обрабатывает свой домен или сценарий использования в приложении. Например, один управляет заказами, другой копается в одном заказе и отображает дополнительные данные.
Если бы я использовал nHibernate (или любой другой ORM) и использовал один сеанс / dataContext для представления (или для действия в дБ), я бы в итоге получил два разных экземпляра для одного и того же Order (скажем, orderId = 1) , Хотя функционально это один и тот же объект, технически это два разных экземпляра. Да, я мог бы реализовать Equals / GetHashcode, чтобы они «казались» одинаковыми.
Зачем вам использовать один экземпляр для сущности по сравнению с частными экземплярами для представления или варианта использования?
Преимущество наличия единичных экземпляров заключается в совместном использовании событий INotifyPropertyChanged и совместном использовании дополнительных (непостоянных) данных.
Наличие частного экземпляра в каждом представлении даст вам гибкость функциональности отмены на уровне представления. В приведенном выше примере я позволил бы пользователю изменять детали заказа и предоставил им возможность не сохранять изменения. Здесь синхронизация между представлением / вариантом использования происходит на уровне постоянства данных.
Каким будет ваш аргумент?