2009-02-19 18 views
11

diciamo che ho una radice aggregata BlogPost. contiene una lista <Comment>.
come dovrebbe apparire la firma di BlogPost AddComment? E 'ok per utilizzare:come devo aggiungere un oggetto in una raccolta gestita da radice aggregata

 
public void AddComment(Comment comment) 
{ 
    Comments.Add(comment); 
} 

o devo evitare di creare riferimenti ai figli di radice di fuori di esso, e fare qualcosa di simile a questo:

 
public void AddComment(string text, string email) 
{ 
    Comment comment = new Comment(text, email); 
    Comments.Add(comment); 
} 

risposta

5

Se credi in DDD, è perfettamente bene sapere su alcune entità al di sotto della radice aggregata, purché non si memorizzi un ID o un riferimento ad esso al di fuori del totale.

Vorrei andare per la versione blogPost.AddComment(new Comment(...)).

4

Se si considera Comment come aggregato di BlogPost e non ha senso da tale ambito, si dovrebbe utilizzare il secondo esempio.

La radice aggregata deve controllare il modo in cui gli aggregati vengono istanziati in modo che i loro costruttori non debbano essere visibili al di fuori della radice aggregata.

Inoltre, il commento deve essere una classe secondaria di BlogPost se si desidera una relazione reale di AggregateRoot-Aggregate.

Problemi correlati