using MP.MONO.Data.DbModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using NLog; using System; using System.Linq; namespace MP.MONO.Data { public partial class MapoMonoContext : DbContext { #region Private Fields private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields #region Public Constructors public MapoMonoContext() { //connString = "server=10.74.82.230;port=3306;database=MAPO.MONO;uid=steamware;pwd=Seriate_24068!;sslmode=None;"; } #endregion Public Constructors #region Public Properties /// /// DbSet elenco Allarmi riconosciuti /// public virtual DbSet DbSetAlarmList { get; set; } = null!; /// /// DbSet log Allarmi /// public virtual DbSet DbSetAlarmLog { get; set; } = null!; /// /// DbSet elenco Allarmi registrati /// public virtual DbSet DbSetAlarmRec { get; set; } = null!; /// /// DbSet valori formato AKV /// public virtual DbSet DbSetKeyVal { get; set; } = null!; /// /// DbSet configurazioni su DB /// public virtual DbSet DbSetConfig { get; set; } = null!; /// /// DbSet Macchine /// public virtual DbSet DbSetMachine { get; set; } = null!; /// /// DbSet valori dati registrati /// public virtual DbSet DbSetDataLog { get; set; } = null!; /// /// DbSet valori statistiche dati registrati /// public virtual DbSet DbSetDataStAg { get; set; } = null!; /// /// DbSet tipi di eventi /// public virtual DbSet DbSetCodEvent { get; set; } = null!; /// /// DbSet elenco eventi registrati /// public virtual DbSet DbSetEventLog { get; set; } = null!; /// /// DbSet tipi di stati /// public virtual DbSet DbSetCodStatus { get; set; } = null!; /// /// DbSet elenco stati registrati /// public virtual DbSet DbSetStatusLog { get; set; } = null!; /// /// DbSet elenco stati formato statistiche aggregate /// public virtual DbSet DbSetStatusStAg { get; set; } = null!; /// /// DbSet log eventi produzione /// public virtual DbSet DbSetProdLog { get; set; } = null!; /// /// DbSet contatori definiti x Prev Maint /// public virtual DbSet DbSetCounter { get; set; } = null!; /// /// DbSet User Team definiti x Prev Maint /// public virtual DbSet DbSetUTeam { get; set; } = null!; /// /// DbSet Topics x Prev Maint /// public virtual DbSet DbSetPMTopic { get; set; } = null!; /// /// DbSet MachineGroup x Prev Maint /// public virtual DbSet DbSetPMMachGroup { get; set; } = null!; /// /// DbSet Task di Prev Maint definiti /// public virtual DbSet DbSetPMTask { get; set; } = null!; /// /// DbSet Task schedualti /// public virtual DbSet DbSetSMTask { get; set; } = null!; /// /// DbSet Pareto Status giornaliero /// /// public virtual DbSet DbSetParetoStatus { get; set; } = null!; /// /// DbSet esecuzione task manutenzione DB /// public virtual DbSet DbSetTaskExec { get; set; } = null!; #endregion Public Properties #region Private Methods partial void OnModelCreatingPartial(ModelBuilder modelBuilder); #endregion Private Methods #region Protected Methods protected string connString = ""; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // tento setup da config try { // uso conn string calcolata connString = DbConfig.CONNECTION_STRING; } catch { } if (string.IsNullOrEmpty(connString)) { // to fix in case of migrations connString = "server=10.74.82.230; port=3306; database=MAPO.MONO;uid=steamware; pwd=Seriate_24068!; sslmode=None;"; } if (!optionsBuilder.IsConfigured) { var serverVersion = ServerVersion.AutoDetect(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().ToView("v_ParetoStatus"); //modelBuilder.Entity(entity => //{ // entity.Property(e => e.ValStd) // .HasComment("Valore di default/riferimento per la variabile"); //}); //modelBuilder.Entity().HasKey(c => new { c.TabName, c.FieldName, c.Val }); //modelBuilder.Entity().HasKey(c => new { c.PlantId, c.FluxType }); //modelBuilder.Entity().HasKey(c => new { c.PlantId, c.ParamUid }); //modelBuilder.Entity() // .HasIndex("DtRif"); modelBuilder.Seed(); OnModelCreatingPartial(modelBuilder); } #endregion Protected Methods #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 } }