What you're looking at is creating an Aggregate Root. A core paradigm of the Domain Driven Design (DDD) principals.
Certain models in your app will appear to belong "at the top" or "as root" to other objects. For example in the case of customers you might have a Contact
model which then contains a collection of ContactPoint
s (names, addresses, etc).
Or a Post
(in the case of a blog), which contains a collection of Comment
s, a Tite, Body and a TagSet
(for tagging). Notice how the items i've highlighted
as objects - these are other model types as opposed to simple types (string
s, int
s, etc).
The trick will come when and how you decide to 'fill' these Aggregate Root trees/graphs. Ie. How will you query just for a single TagSet
? Will you go to the top and get the corresponding Post
first? Maybe you just wanted to rename the tag "aspnetmvc" to "asp.net-mvc" for all Post
s so you want to cut in and just get the TagSet
item.
The MVC Storefront tutorial has some good examples of this pattern. Take a look if you can.