I can see from the outside that it does looks strange.
One thing this does is it reduces the amount of columns you have to
make in each table that represents an entity. If this was model
driven design, when we add something to the DomainEntity, we would not
have to go to each table that representated an entity in our system
and add that column. I understand reducing the amount of columns in
not the primary goal with databases or performant.
Also, this would make it easier to query the table and see all
entities without having to union all tables together.
So your suggestion is table per class? So the properties in all the
base classes are duplicated throughout the system.
The fluent automapping just does not work with this scenario anyway.
Meaning, fluent auto map would handle one base and an one inheritance
level, but as soon as you add 3 levels of inheritance it all breaks.
I understand the convention that modifies the base class type as well
and that base class is not an abstract class. Which is probably why
automapper does not work. Just guessing.
My question is why would table per sub class query all subclasses when
all you want is the base class data? What is the purpose of that? Is
there a way to turn that off?
Also if you have a more sensible approach. I am all for it.