113 lines
4.0 KiB
C#
113 lines
4.0 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using MySqlConnector;
|
|
using NLog;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MagMan.Data.Tenant
|
|
{
|
|
public static class DbConfig
|
|
{
|
|
#region Public Fields
|
|
|
|
public static string DATABASE_NAME = "MagMan_000000";
|
|
public static int DATABASE_PROCESS_TIMEOUT = 5;
|
|
public static string DATABASE_PWD = "viad@nte16!";
|
|
public static string DATABASE_SERV = "127.0.0.1";
|
|
public static string DATABASE_USER = "MagMan_DbUser";
|
|
|
|
#endregion Public Fields
|
|
|
|
#region Public Properties
|
|
|
|
/// <summary>
|
|
/// DB Connection string
|
|
/// </summary>
|
|
public static string CONNECTION_STRING { get; set; } = "";
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Public Methods
|
|
|
|
public static ServerVersion CustomAutoDetect(string connectionString)
|
|
{
|
|
#if false
|
|
using var connection = new MySqlConnection(
|
|
new MySqlConnectionStringBuilder(connectionString)
|
|
{
|
|
Database = string.Empty,
|
|
// AutoEnlist = false, Pooling = false,
|
|
}.ConnectionString);
|
|
#endif
|
|
using var connection = new MySqlConnection(connectionString);
|
|
connection.Open();
|
|
ServerVersion currVers = ServerVersion.Parse(connection.ServerVersion);
|
|
return currVers;
|
|
}
|
|
|
|
public static string CustomerConnString(string server, int nKey)
|
|
{
|
|
string dbName = $"MagMan_{nKey:000000}";
|
|
return $"server={server};port=3306;database={dbName};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
|
//LoadBalance=RoundRobin;Pooling=true;
|
|
}
|
|
|
|
public static bool ExecMigrationMain(string connString)
|
|
{
|
|
// esecuzione migrazione
|
|
var migrateTask = Task.Run(async () => await DbAdmin.migrateDbMain(connString));
|
|
migrateTask.Wait();
|
|
return migrateTask.Result;
|
|
}
|
|
|
|
public static void InitDb(string server, int nKey)
|
|
{
|
|
DATABASE_SERV = server;
|
|
DATABASE_NAME = $"MagMan_{nKey:000000}";
|
|
CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;";
|
|
//LoadBalance=RoundRobin;Pooling=true;
|
|
}
|
|
|
|
public static ServerVersion MysqlServerVersion(string connString)
|
|
{
|
|
// fix come da https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/issues/1859
|
|
//Log.Info($"MysqlServerVersion | {connString}");
|
|
//ServerVersion serverVersion = ServerVersion.Parse("10.11.13-MariaDB");
|
|
ServerVersion serverVersion = ServerVersion.Parse("10.5.25-mysql");
|
|
bool versOk = false;
|
|
try
|
|
{
|
|
serverVersion = ServerVersion.AutoDetect(connString);
|
|
versOk = true;
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Log.Error($"Eccezione in verifica versione server ServerVersion.AutoDetect: {Environment.NewLine}{exc}");
|
|
}
|
|
if (!versOk)
|
|
{
|
|
try
|
|
{
|
|
serverVersion = CustomAutoDetect(connString);
|
|
versOk = true;
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
Log.Error($"Eccezione in verifica versione server CustomAutoDetect: {Environment.NewLine}{exc}");
|
|
}
|
|
}
|
|
return serverVersion;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Private Fields
|
|
|
|
private static Logger Log = LogManager.GetCurrentClassLogger();
|
|
|
|
#endregion Private Fields
|
|
}
|
|
} |