У меня есть вопрос, связанный с правильной настройкой NHibernate для строки динамического соединения в приложении ядра .Net.
Я создал FluentConfiguration как Singleton:
services.AddSingleton<FluentConfiguration>(factory =>
{
return Fluently.Configure()
.Mappings(x => x.FluentMappings.AddFromAssemblyOf<MappingCandidate>())
.CurrentSessionContext<WebSessionContext>()
.ExposeConfiguration(cfg =>
{
new SchemaExport(cfg)
.Execute(false, false, false);
});
});
ISession как область действия:
services.AddScoped<ISessionSource, SessionSource>();
и SessionSource выглядит следующим образом:
public ISession CreateSession(int companyId)
{
return GetSessionFactory(companyId).OpenSession();
}
private Configuration AssembleConfiguration(string connectionString)
{
return _fluentConfiguration
.Database(() =>
{
return FluentNHibernate.Cfg.Db.MsSqlConfiguration
.MsSql2012
.ConnectionString(connectionString);
})
.BuildConfiguration();
}
private ISessionFactory GetSessionFactory(int companyId)
{
var configuration = AssembleConfiguration(__dbCustomProvider.GetConnectionStringForCompany(companyId));
return configuration.BuildSessionFactory();
}
Это правильный способ использования строки динамического соединения?эффективно?