Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class CompanyDal(ISession session) //nhibernate session
- {
- Save(ICompany company)
- {
- session.Save(company)
- }
- }
- public class TenantConnectionProvider : DriverConnectionProvider
- {
- private IDictionary<string, string> _tenantConnectionStrings;
- public override void Configure(IDictionary<string, string> settings)
- {
- // Load connection strings from config file
- _tenantConnectionStrings = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
- foreach (ConnectionStringSettings connectionStringSetting in ConfigurationManager.ConnectionStrings)
- {
- _tenantConnectionStrings.Add(connectionStringSetting.Name, connectionStringSetting.ConnectionString);
- }
- base.Configure(settings);
- }
- public override IDbConnection GetConnection()
- {
- var connectionString = GetConnectionString(); //not shown, mine is for Web API
- var connection = new SqlConnection(connectionString);
- connection.Open();
- return connection;
- }
- }
- // connection string has to be set even though custom provider is used
- var config = Fluently.Configure()
- .Database(MsSqlConfiguration.MsSql2008.ConnectionString("custom").Provider<TenantConnectionProvider>)
- .Mappings(m =>
- {
- m.FluentMappings.AddFromAssemblyOf<MyClass>();
- });
- .Register<ISession>(factory1.OpenSession()).Named("f1");
- .Register<ISession>(factory2.OpenSession()).Named("f2");
- .Register<IRepository>().OnActivating(e => {
- var db = HttpContext.Current.Request.Url....//some code to find the db
- var dep = e.Context.Resolve<ISession>("f1");
- e.Instance.SetTheDependency(dep);})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement