1

У меня есть реализация пользовательского репозитория, использующая NHibernate через FluPhield NHibernate в AutoPersistenceModel.NHibernate: Можно ли манипулировать репозиторием непосредственно из классов сущностей?

У меня есть группа классов сущностей, которые я сохраняю в этом хранилище.

Вопрос в том, можно ли положить реальную бизнес-логику внутри этих классов сущностей?

Все ли в порядке, если какая-либо из этих бизнес-логик требует манипулирования репозиторией?
(Например, некоторые методы должны были бы создать несколько новых объектов, некоторые из них необходимо обновить существующие entites и т.д.)

Я знаю, что NHibernate имеет мощные функции живучесть невежество, но я до сих пор не уверен, эта деталь. Заранее благодарю за ваши ответы!

ответ

1

Logic w.r.t Объекты должны быть ограничены его «бизнес-доменом». Это очень плохая идея/дизайн для обновления других объектов/инфраструктуры внутри объекта.

т.е.

Order --> OrderLines 
Order {OrderId, OrderDate, Customer, OrderLines, ...} 
OrderLines {OrderLineId, Order, Item, Price, Quantity, Deliveries, DeliveredQuantity, ...} 

OrderDelivery --> OrderDeliveryLines 
OrderDelivery {OrderDeliveryId, Customer, DeliveryDate, ...} 
OrderDeliveryLines {OrderDeliveryLineId, OrderDelivery, OrderLine, DeliveryQuantity, ....} 

Где поставляется количество OrderLine является суммирование всех поставок, выдвинутых против него.

Таким образом, в случае, указанном выше, было бы неправильно создавать/обновлять доставку через заказ (т. Е. Процесс заказа), доставка DeliveryLine должна быть произведена против соответствующего orderLine w.r.t поставленного qty (в рамках процесса доставки).

Когда транзакционные границы четко определены, вы никогда не будете требовать от логики процесса ползти в свой «бизнес-домен»

http://domaindrivendesign.org/

+0

Это является удивительным, но я не могу использовать одни и те же классы, которые я использую как объекты как объекты моего домена? – Venemo

+0

да, конечно, если вы этого не сделаете, то это победит всю цель сопоставления бизнес-функций с доменом. – kalki

+0

Итак, если мой домен требует манипулировать репозиторием, и я хочу использовать объекты своего домена как объекты, то что? – Venemo

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