TigerEmu/Storage/NhSessionFactory.cs

38 lines
1.3 KiB
C#
Raw Normal View History

2023-09-23 12:20:45 +00:00
using System.Reflection;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
2023-09-23 11:11:07 +00:00
using Microsoft.Extensions.Configuration;
2023-09-23 12:20:45 +00:00
using MySql.Data.MySqlClient;
using NHibernate;
2023-09-23 11:11:07 +00:00
namespace Tiger.Storage;
2023-09-23 12:20:45 +00:00
public class NhSessionFactory : INhSessionFactory
2023-09-23 11:11:07 +00:00
{
2023-09-23 12:20:45 +00:00
private readonly ISessionFactory _sessionFactory;
public NhSessionFactory(IConfiguration configuration)
2023-09-23 11:11:07 +00:00
{
var stringBuilder = new MySqlConnectionStringBuilder
{
Server = configuration["Database:Host"],
Port = uint.Parse(configuration["Database:Port"] ?? "3306"),
UserID = configuration["Database:Username"],
Password = configuration["Database:Password"],
Database = configuration["Database:Database"],
Pooling = true,
MinimumPoolSize = uint.Parse(configuration["Database:MinPool"] ?? "5"),
MaximumPoolSize = uint.Parse(configuration["Database:MaxPool"] ?? "15")
};
2023-09-23 12:20:45 +00:00
_sessionFactory = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(stringBuilder.ToString()).ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
.BuildSessionFactory();
2023-09-23 11:11:07 +00:00
}
2023-09-23 12:20:45 +00:00
public ISession OpenSession()
2023-09-23 11:11:07 +00:00
{
2023-09-23 12:20:45 +00:00
return _sessionFactory.OpenSession();
2023-09-23 11:11:07 +00:00
}
}