lets say i have a BlogPost aggregate root. it holds a List<Comment>.
how should the BlogPost AddComment signature look? is it OK to use:
public void AddComment(Comment comment) { Comments.Add(comment); }
or should i avoid creating references to root’s children outside of it, and do something like this:
public void AddComment(string text, string email) { Comment comment = new Comment(text, email); Comments.Add(comment); }
If you believe in DDD, it’s perfectly fine to know about some entity beneath the aggregate root, as long as you do not store an ID or a reference to it somewhere outside of the aggregate.
I would go for the
blogPost.AddComment(new Comment(...))-version.