title: Hierarchical or flat domain-model-graph?
body: <p>I'm building a custom general purpose domain model for some assorted c#-projects. The issue I'm struggling with now is the choice of model structure. Either I do a hierachical model with parent, children, ancestors etc or a flat more graph-like structure. With hierarchical I mean where I can write Entity.Parent and get the parent and graph where I have links instead of relationships.</p>
  
  <p>It's a great deal simpler and less error prone to do a flat graph. You could for instance load individual entities one at a time in some random order without having to assemble them in a correct structure.</p>
  
  <p>But the concept of a hierarchical domain is also pretty attractive. It's nicely structured and organized. A great benifit with a hierarchical domain is that you can inherit properties from a parent or ancestor. You can for instance inherit deletion-state into the descendants. Having a flat graph this wouldn't be as easy. Also this requires all ancestors to be loaded for all entities at all times which of course is a down-side.</p>
  
  <p>So my question is what other benifits there are with a hierarchical domain? I couln't come up with any more than inheriting properties from ancestors and perhaps messaging within the graph; For instance if an entity would like to react to a change in a descendant entity. Any more benifits? I'm not sure I really need the above so If there aren't any more great benifits I think I go for the flat structure anyway because it's so much simpler to work with.</p>