The references to TenantId and TeamId are acyclic dependencies; they go in a single direction. Yet, while the BacklogItem reference to ProductId seems to form an acyclic dependency from the backlogItem Module to product, it is actually bidirectional. Each Product serves as a Factory for creating BacklogItem (and Release, and Sprint) instances. Thus, the dependencies go in both directions. Still, the three sub-Modules are children of product, and we can relax the rules of dependencies a bit. Here the trade-off is organizational strengths over coupling. Again, BacklogItem, Release, and Sprint are all natural and expected child concepts of Product, so there is little sense in trying to break up these concepts beyond Aggregate boundaries. Ho...
Share this highlighthttp://www.safaribooksonline.com/a/implementing-domain-driven-design/8076333/