Строка динамического соединения NHibernate .net core - PullRequest
0 голосов
/ 22 мая 2019

У меня есть вопрос, связанный с правильной настройкой 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();
}

Это правильный способ использования строки динамического соединения?эффективно?

...