3

私はかなり前からドメイン駆動設計(DDD)を扱ってきましたが、Entity Framework(EF)は比較的新しいので、VisualStudioでEntityFrameworkDesignerを使用するときに頭に浮かんだ質問の1つは集計はEFで表現/モデル化する必要があります。

DDDのベストプラクティスに従うと、エンティティは同じアグリゲート内の他のエンティティ(または値オブジェクト)のみを参照する必要があり、他のエンティティへの参照はアグリゲートのルートエンティティ(アグリゲートルート)に制限されます。ただし、EFにこれらの概念が存在することはわかりません(つまり、すべてのエンティティが同様に扱われるため、エンティティ間の参照に制限は適用されません)。

したがって、私は尋ねています:私はEFで何かを見逃しましたか、それとも集約、集約ルート、およびエンティティ間の参照について完全に不可知論的ですか?後者の場合、Entity Frameworkを使用するときにAggregateをどのようにモデル化しますか?

4

2 に答える 2

2

DDDは他のレベルの抽象化だと思うので、私の答えは、デフォルトではEFはこれらの慣行に従っていないということです。DDDに従うようにエンティティとリポジトリをモデル化するのはあなた次第です。リポジトリを使用して、現在の集約ルートにのみ関連するロードされた関連エンティティを使用して集約ルートを構築し、ドメインサービスを使用してさまざまなリポジトリを操作します。

于 2010-09-07T18:19:18.057 に答える
1

私は小さな(しかしかなり重要な詳細)を修正したかっただけです:

「エンティティは、同じアグリゲート内の他のエンティティ(または値オブジェクト)のみを参照する必要がある」と述べています。

もちろん、これにはいくつかの議論があるかもしれませんが、DDDの少なくとも1つのリソースが推奨するものよりも厳密です。「アグリゲート内のオブジェクトは、他のアグリゲートのルートへの参照を保持できるようにする必要があります。」(Avram&Marinescuによる「Domain-DrivenDesignQuickly」)。

よろしく、サイモン

于 2010-09-30T12:28:17.157 に答える