Looking at ways to use IoC interception also to try and inject the schema or change the mapping at runtime but its all a bit hacky and would be so much easier to have the means to map each table using runtime instead of compile time logic.

Maybe I've missing something obvious in the code but when it comes to my admittedly very specific scenario, it's is really awkward to get your product to work well.

Any ideas or thoughts on providing an extensibility point to make this possible?

I can never know the specific schema I am targeting for non shared data until runtime as it is based on information associated with a ERP user.
...
How can I set the schema per table at runtime based on some business logic per user?