66 lines
2.1 KiB
C#
66 lines
2.1 KiB
C#
///
|
|
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
|
///
|
|
using System;
|
|
using NHibernate;
|
|
using Common;
|
|
|
|
namespace TBF
|
|
{
|
|
public class DB
|
|
{
|
|
///
|
|
/// Database related: This object reference is set after a successful user login
|
|
///
|
|
public static DatabaseSettings CurrentBench;
|
|
|
|
/// <summary>
|
|
/// Session factories for regular sessions.
|
|
/// </summary>
|
|
public static ISessionFactory[] SessionFactories = new ISessionFactory[(int)DBKind.Count];
|
|
|
|
/// Create a NHibernate session for the given database
|
|
public static ISession CreateSession(DBKind database)
|
|
{
|
|
if (database < 0 || database >= DBKind.Count) return null;
|
|
|
|
int ix = (int)database;
|
|
if (SessionFactories[ix] == null)
|
|
{
|
|
SessionFactories[ix] = CreateSessionFactory(database);
|
|
}
|
|
|
|
return SessionFactories[ix].OpenSession();
|
|
}
|
|
|
|
/// <summary>
|
|
/// NHibernate session factory (to create the database session 'SessionFactory')
|
|
/// </summary>
|
|
/// <returns>A database session</returns>
|
|
static ISessionFactory CreateSessionFactory(DBKind database)
|
|
{
|
|
Common.DBType dbType;
|
|
string connectionString;
|
|
|
|
switch (database)
|
|
{
|
|
default:
|
|
case DBKind.Config:
|
|
dbType = CurrentBench.ProceduresDBSettings.DbType;
|
|
connectionString = CurrentBench.ProceduresDBSettings.ConnectionString;
|
|
break;
|
|
case DBKind.Results:
|
|
dbType = CurrentBench.WaterMetersDBSettings.DbType;
|
|
connectionString = CurrentBench.WaterMetersDBSettings.ConnectionString;
|
|
break;
|
|
case DBKind.RemoteConfig:
|
|
dbType = CurrentBench.UsersDBSettings.DbType;
|
|
connectionString = CurrentBench.UsersDBSettings.ConnectionString;
|
|
break;
|
|
}
|
|
|
|
return Config.FluentCommon.CreateSessionFactory(database, dbType, connectionString, false);
|
|
}
|
|
}
|
|
}
|