I ran into a similiar problem. I have two kinds of clients that do some of the same things and some different ones to my object model.
My heirarchy:
Code:
BaseModelData
^ ^
| |
ClientOne ClientTwo
Data Data
I wanted to load the client specific data when the model was sent client side.
What I did to make this work is to employ the table per heirarchy strategy but to set the discriminator to a constant for all the subclasses.
What this allows me to do is
Save a ClientOneData instance and read it back as a ClientTwoData instance. There should be problems if you have an instance of ClientOneData and one of ClientTwoData that refer to the same BaseModelData class active at the same time in the same session.