1

いくつかのオブジェクトでTimePeriod(AM、PM、NIGHTなど)参照が必要です。例えば。ScheduledMeeting、ActualMeeting。

TimePeriodはIDを使用してデータベースにありますが、変更されないため、エンティティではありません。また、「AM」期間はすべてのオブジェクトで同じです。

私の難しさは、データベースからこの値オブジェクトを取得する方法を知ることです。異なるオブジェクトがそれを参照できるので、それはそれらのリポジトリメソッドの一部であってはなりませんが、同時に、それはルートではないので、それ自身のリポジトリを持つべきではありません。

では、これをデータベースから取得することをどのように推奨しますか?

ありがとう。

アップデート

複数のグローバル値オブジェクトに対して複数の小さなリポジトリを設定するという考えはあまり好きではありませんが、期間はDBからリポジトリを介して戻ることができると彼が説明したので、私はeulerfxの答えを選びました。このエリアはまだ少し灰色に感じます。

4

2 に答える 2

2

は値オブジェクトであるためTimePeriod、他のオブジェクトがそれを参照する場合、IDではなく値自体を参照します。期間オブジェクトを不変にして、オブジェクトが期間を参照すると、オブジェクトが変更されないことを認識できるようにします。期間の値はデータベーステーブルに格納でき、テーブルレコードにはIDがありますが、コードで表現する必要はありません。たとえば、使用可能な期間のリストを表示するUIを提供する場合は、期間を取得するための単純なリポジトリを作成できます。リポジトリは必ずしも集計のみを返す必要はありません。期間が本質的に非常に静的である場合は、メモリにキャッシュするか、使用可能なすべての期間で静的クラスを作成することを検討できます。

于 2012-08-31T01:37:17.233 に答える
1

TimePeriodはIDを使用してデータベースにありますが、変更されないため、エンティティではありません。

オブジェクトのライフサイクルが明確に定義されている限り、その内容が変更されていなくても、オブジェクトはエンティティである可能性があります。質問は、「TimePeriodsは動的に作成および削除されますか?」です。

  • はい?その場合、TimePeriodは独自のリポジトリを持つエンティティである必要があります。これは、EricEvansが彼のDDD本で説明している知識レベルの例です。

  • いいえ?次に、データベースは必要ありません。TimePeriodsを静的に定義するだけです。

于 2012-08-31T05:08:52.417 に答える