1

私は、NHibernateからFluent NHibernateのAutoPersistenceModelを使ってカスタムリポジトリを実装しています。NHibernate:エンティティクラスから直接リポジトリを操作することはできますか?

私はこのリポジトリで永続的なエンティティクラスを持っています。

実際のビジネスロジックをこれらのエンティティクラスに入れてもいいですか?

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

私はNHibernateのは、強力な永続無知の機能を持っているけど、私はまだわからないんだけどこの詳細。あなたの答えに事前に感謝します!

答えて

1

ロジック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, ....} 

したがって、上記の場合、注文(すなわち注文プロセス)を介して配送を作成/更新することは間違いです。配送のdeliveryLineは、(配送プロセス内の)対応するorderLine.r配送済みqtyに対して行われます。

トランザクション境界が明確に定義されている場合、あなたは「事業ドメイン」にクリープ

http://domaindrivendesign.org/

+0

をプロセスロジックを必要とすることはありません。これは素晴らしいですが、私は、私が使用するのと同じクラスを使用することはできません私のドメインオブジェクトとしてのエンティティとして? – Venemo

+0

あなたはそうしなければ、ビジネス機能をドメインにマッピングする目的を全面的に打ち破るべきです。 – kalki

+0

私のドメインがリポジトリを操作する必要があり、ドメインオブジェクトをエンティティとして使用したい場合、何ですか? – Venemo

関連する問題