using MagMan.Data.Tenant.DbModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; using NLog; using Org.BouncyCastle.Pqc.Crypto.Lms; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MagMan.Data.Tenant { public partial class MagManContext : DbContext { #region Public Constructors public MagManContext() { // default connString = DbConfig.CONNECTION_STRING; } public MagManContext(string currConnString) { connString = currConnString; } #endregion Public Constructors #region Public Properties public virtual DbSet DbSetAlias { get; set; } = null!; public virtual DbSet DbSetConfig { get; set; } = null!; public virtual DbSet DbSetDayStat { get; set; } = null!; public virtual DbSet DbSetEventList { get; set; } = null!; public virtual DbSet DbSetItems { get; set; } = null!; public virtual DbSet DbSetLogMac { get; set; } = null!; public virtual DbSet DbSetMachGrp { get; set; } = null!; public virtual DbSet DbSetMaterials { get; set; } = null!; public virtual DbSet DbSetMovMag { get; set; } = null!; public virtual DbSet DbSetPart { get; set; } = null!; public virtual DbSet DbSetProjects { get; set; } = null!; public virtual DbSet DbSetReqPlan { get; set; } = null!; public virtual DbSet DbSetResources { get; set; } = null!; public virtual DbSet DbSetStatusList { get; set; } = null!; #endregion Public Properties #region Public Methods public void DbForceMigrate() { try { // se non ci fosse... crea o migra! Database.Migrate(); Log.Info("DbForceMigrate: done!"); } catch (Exception exc) { Log.Error(exc, "DbForceMigrate: Exception during context initialization 01"); } } #endregion Public Methods #region Protected Methods protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { // commentato x test su cluster in ufficio #if DEBUG //connString = "Server=localhost;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;"; ////connString = "Server=mdb03.ufficio;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;"; connString = "Server=mdb.ufficio;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;Connection Lifetime=60;Connection Timeout=15;DefaultCommandTimeout=30;ConnectionIdleTimeout=30;ConnectionLifeTime=300;"; #endif var serverVersion = DbConfig.MysqlServerVersion(connString); optionsBuilder.UseMySql(connString, serverVersion, options => options.EnableRetryOnFailure( maxRetryCount: 5, maxRetryDelay: TimeSpan.FromSeconds(10), errorNumbersToAdd: null) ); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys())) { relationship.DeleteBehavior = DeleteBehavior.Restrict; } modelBuilder.Entity(entity => { entity.Property(e => e.ValStd) .HasComment("Valore di default/riferimento per la variabile"); }); modelBuilder.Entity() .HasKey(c => new { c.Family, c.ValueOriginal }); modelBuilder.Seed(); OnModelCreatingPartial(modelBuilder); } #endregion Protected Methods #region Private Fields private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private string connString = ""; #endregion Private Fields #region Private Methods partial void OnModelCreatingPartial(ModelBuilder modelBuilder); #endregion Private Methods } }