1

FluentNHibernateのAutoPersistenceModelを介してNHibernateを使用するカスタムリポジトリ実装があります。

このリポジトリで永続化するエンティティクラスがたくさんあります。

問題は、これらのエンティティクラス内に実際のビジネスロジックを配置しても大丈夫ですか?

このビジネスロジックの一部でリポジトリ自体を操作する必要がある場合でも、問題はありませんか?
(たとえば、いくつかのメソッドはいくつかの新しいエンティティを作成する必要があり、それらのいくつかは既存のエンティティを更新する必要がありますなど)

NHibernateには強力な永続性の無知機能があることは知っていますが、この詳細についてはまだわかりません。よろしくお願いします!

4

1 に答える 1

1

ロジックwrtエンティティは、その「ビジネスドメイン」に制限する必要があります。エンティティ内の他のエンティティ/インフラストラクチャを更新することは非常に悪い考え/設計です。

すなわち

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に対して作成されます。

トランザクションの境界が明確に定義されている場合、プロセスロジックが「ビジネスドメイン」に忍び寄る必要はありません。

http://domaindrivendesign.org/

于 2012-05-10T04:53:41.017 に答える