using MagMan.Data.Admin.DbModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using MySqlConnector; using NLog; namespace MagMan.Data.Admin { /// /// Classe gestione Server MySql: /// - creazione utenti su DB principale /// - aggiunta permessi lettura/scrittura /// public partial class ServerAdminContext : DbContext { #region Private Fields #endregion Private Fields private static Logger Log = LogManager.GetCurrentClassLogger(); #region Public Constructors public ServerAdminContext() { Log.Info("Calling ServerAdminContext()"); } public ServerAdminContext(IConfiguration configuration) { Log.Info("Calling ServerAdminContext(IConfiguration configuration)"); } public ServerAdminContext(DbContextOptions options) : base(options) { Log.Info("Calling ServerAdminContext(DbContextOptions options)"); } #endregion Public Constructors #region Public Properties /// /// User management /// public virtual DbSet UserList { get; set; } = null!; /// /// User management /// public virtual DbSet DbList { get; set; } = null!; #endregion Public Properties #region Protected Methods protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { Log.Info("Calling OnConfiguring"); string connString = DbConfig.ADMIN_CONNECTION_STRING; if (!optionsBuilder.IsConfigured) { // chiave cablata x gestione Server se fosse vuota... if (string.IsNullOrEmpty(connString)) { connString = "Server=localhost;port=3306;database=mysql;user=egalware;pwd=Egalware_24068!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;"; } ServerVersion serverVersion = DbConfig.MysqlServerVersion(connString); optionsBuilder.UseMySql(connString, serverVersion); Log.Info("NOT Configured | connString forced to default!"); } else { Log.Info("optionsBuilder.IsConfigured"); } } 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; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().HasKey(c => new { c.Host, c.User }); OnModelCreatingPartial(modelBuilder); } #endregion Protected Methods #region Private Methods // // This is here so CodeMaid doesn't reorganize this document // partial void OnModelCreatingPartial(ModelBuilder modelBuilder); #endregion Private Methods } }