public static ISession CreateNewSession() { if (_sessionFactory == null) { string connection = XTradeConfig.ConnectionString(); if (XTradeConfig.ConnectionStringName().Contains("SQLite")) { // http://qaru.site/questions/754091/getting-fluent-nhibernate-to-work-with-sqlite var dbConfig = SQLiteConfiguration.Standard.ConnectionString(connection); _sessionFactory = Fluently.Configure().Database(dbConfig) .Mappings(m => m.FluentMappings.AddFromAssemblyOf <DBAdviser>()) .BuildSessionFactory(); } else { var dbConfig = MySQLConfiguration.Standard.ConnectionString(connection); _sessionFactory = Fluently.Configure().Database(dbConfig) .Mappings(m => m.FluentMappings.AddFromAssemblyOf <DBAdviser>()) .BuildSessionFactory(); } } lock (lockObject) // Session is not thread safe thus - should be locked. { return(_sessionFactory.OpenSession()); } }
private static void InitConfig() { if (config == null) { config = MainService.thisGlobal.Container.Resolve <XTradeConfig>(); } }