2009-04-03 6 views
1

または、ルートエンティティオブジェクトを含む新しいオブジェクトを定義しますか?ルートエンティティをインスタンス化するときに集約オブジェクトを作成しますか?

public class SomeAggregateName() 
{ 
    public EntityRoot root {get;set;} 
    public Entity entity {get;set;} 
} 

またはこれは集約されていますか?

public class EntityRoot() 
{ 
    public Entity entity {get;set;} 
} 
+0

何か?私は必要があれば明確にすることを嬉しく思います。 –

答えて

3

集合体は通常、エンティティです。つまり、エンティティです。

あなたの例では、実際にドメインを取得していないため、少し難しくなります。

しかし、OrderLinesを含むOrder Aggregate Rootの典型的な例を考えてみましょう。 Orderはエンティティであり、集約ルートでもあります。 OrderLineはOrder Aggregateに含まれているため、Order Aggregateの外部に直接アクセスすることはできません。

// This is the Order Aggregate Root 
public class Order 
{ 
    private IList<OrderLine> OrderLines { get; set; } 
} 
0

関連する質問:

私は私のドメインエンティティを初期化するために、例えば、FluentNHiberanateを使用する場合、それは私のOrderクラスは次のように見えることが必要です。

public class Order 
{ 
    public virtual IList<OrderLine> OrderLines { get; set; } 
} 

を、これは違反集合体の内部エンティティのカプセル化。 カプセル化を破ることなくそれを行う方法に関するアイデアはありますか?


OKは(利用可能なソリューションの1つ)、民間へ 変更の注文ラインのメンバーにそれを発見し、マッピングファイルにこれを追加します。あなたは以下の答えとのわからない

HasMany(Reveal.Property<Order, IEnumerable<OrderLine>>("OrderLines")) 
.Inverse() 
.Cascade 
.All(); 
関連する問題