64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
///
|
|
/// Copyright (c) 2017 Sensus Metering Systems
|
|
///
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using FluentNHibernate.Cfg;
|
|
using FluentNHibernate.Cfg.Db;
|
|
using log4net;
|
|
using NHibernate;
|
|
using NHibernate.Cfg;
|
|
using NHibernate.Tool.hbm2ddl;
|
|
using Results.Entities;
|
|
|
|
namespace Results
|
|
{
|
|
public class DBase
|
|
{
|
|
static readonly ILog log = LogManager.GetLogger(typeof(DBase));
|
|
|
|
/// <summary> Session factory for all regular sessions, not for CreateEmptyResultsDB(). </summary>
|
|
public static IList<DBase> Databases;
|
|
public static int Count { get { return Databases.Count; } }
|
|
|
|
static DBase()
|
|
{
|
|
Databases = new List<DBase>();
|
|
}
|
|
|
|
|
|
public readonly string Name;
|
|
public readonly string ConnectionString;
|
|
|
|
ISessionFactory sessionFactory;
|
|
|
|
public DBase(string connectionString, string name)
|
|
{
|
|
this.ConnectionString = connectionString;
|
|
this.Name = name;
|
|
sessionFactory = Fluently.Configure()
|
|
.Database(MySQLConfiguration.Standard.ConnectionString(connectionString))
|
|
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Entities.WaterMeterData>())
|
|
.ExposeConfiguration(BuildSchema)
|
|
.BuildSessionFactory();
|
|
}
|
|
|
|
public DBase(string connectionString)
|
|
: this(connectionString, string.Empty)
|
|
{
|
|
}
|
|
|
|
|
|
private void BuildSchema(Configuration config)
|
|
{
|
|
/// This NHibernate tool takes a configuration with mapping info and exports a database schema
|
|
new SchemaExport(config).SetOutputFile("db_schema");
|
|
}
|
|
|
|
public ISession OpenSession()
|
|
{
|
|
return sessionFactory.OpenSession();
|
|
}
|
|
}
|
|
}
|