I am working on understanding DDD and want to see if this idea is sound, if it is common practice, and if there are any pitfalls or unforeseen complications.
I want to effectively have one "entity" with a globally unique primary key. I want to use event sourcing. I would like have different AR classes represent this "entity" depending on the context.
For example, in an ecommerce site I'd have a few different types of pages (static content pages, category pages, product pages). I'd also have products. There should be a 1:1 mapping between a product and a product page, effectively a
ProductPage subtype of
Page with a single, unique ID representing both the Page and the Product components.
When in the content management context, I'd load all
Page events for that ID to reconstruct my
Page AR object, do any
Page related actions, and save out the appropriate
Page events (ex.
When in the product management context, I'd load all the
Product events for that ID to reconstruct the
Product AR object, do any
Product related actions, and save out the appropriate
Product events (ex.
Then, when generating my read model, I'd load all the events for that ID to construct a
ProductPage and save it to the read model database.
Is this a correct way of going about this or is this a bad idea for some reason I can't see? Or is there a better way?