0

I currently have a single-tenant application that uses fluent-nhibernate mappings to map C# objects to tables in my MySQL database.

As part of an effort to bring multi-tenancy to my application, I am considering having a single schema for each tenant. That is, I will have n schemas with identical table structures, n somewhere in the hundreds.

How can I rig up NHibernate, along with my fluent mappings, so that I can arbitrarily access the correct schema, and without having to replicate my C# objects to map to each schema?

Chris
  • 4,663
  • 5
  • 24
  • 33

1 Answers1

1

Not tested, but you can set in the SessionFactory (technically in its configuration) the default schema name. The property is hibernate.default_schema. So you could have multiple SessionFactory, one for each schema. Clearly you mustn't set the scema name at the Entity level.

Something like:

var config = new Configuration();
... other configuration ...
config.Properties["hibernate.default_schema"] = "Foo"; // your schema name
ISessionFactory sf = config.BuildSessionFactory();
xanatos
  • 109,618
  • 12
  • 197
  • 280