diff --git a/EgtBEAMWALL.DataLayer/AdminContext.cs b/EgtBEAMWALL.DataLayer/AdminContext.cs index a7cfa42e..a6f14aad 100644 --- a/EgtBEAMWALL.DataLayer/AdminContext.cs +++ b/EgtBEAMWALL.DataLayer/AdminContext.cs @@ -32,6 +32,10 @@ namespace EgtBEAMWALL.DataLayer /// public DbSet UserList { get; set; } + public DbSet MigrList { get; set; } + + + #endregion Public Properties #region Public Methods diff --git a/EgtBEAMWALL.DataLayer/Controllers/DbController.cs b/EgtBEAMWALL.DataLayer/Controllers/DbController.cs index 46f1fc15..7214f8bf 100644 --- a/EgtBEAMWALL.DataLayer/Controllers/DbController.cs +++ b/EgtBEAMWALL.DataLayer/Controllers/DbController.cs @@ -78,8 +78,18 @@ namespace EgtBEAMWALL.DataLayer.Controllers try { - // in primis refresh delle view - string sqlCommand = @"CREATE OR REPLACE VIEW v_expProdRaw AS + // migrazione minima x eseguire refresh viste + string minMigration = "202404261445205_UpdateLogMachineTable"; + // cerco se ho la migration minima per proseguire... + var numRec = dbCtx + .MigrList + .Where(x => x.MigrationId == minMigration) + .ToList() + .Count; + if (numRec == 0) + { + // in primis refresh delle view + string sqlCommand = @"CREATE OR REPLACE VIEW v_expProdRaw AS SELECT DbId, DtEvent, VarValue, SUBSTRING_INDEX(VarValue, ';', 1) AS Prod, SUBSTRING_INDEX(SUBSTRING_INDEX(VarValue, ';', 2), ';', -1) AS MachGroupId, @@ -94,18 +104,19 @@ namespace EgtBEAMWALL.DataLayer.Controllers FROM v_expProdRaw AS vp INNER JOIN MachGroupList mgl ON vp.MachGroupId = mgl.Id INNER JOIN partlist pl ON vp.PartId = pl.Id;"; - dbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand); - Thread.Sleep(100); + dbCtx.Database.ExecuteSqlCommand(System.Data.Entity.TransactionalBehavior.DoNotEnsureTransaction, sqlCommand); + Thread.Sleep(100); - // ora setup parametri x utente - string domain = "%"; + // ora setup parametri x utente + string domain = "%"; - // ora controllo utente con diritti - answ = doCheckCreate(username, pwd, answ, domain, true); - if (answ) - { - doGrantPriv(username, domain, "USAGE ON *.*"); - doGrantPriv(username, domain, $"SELECT ON {dbName}.v_expProd"); + // ora controllo utente con diritti + answ = doCheckCreate(username, pwd, answ, domain, true); + if (answ) + { + doGrantPriv(username, domain, "USAGE ON *.*"); + doGrantPriv(username, domain, $"SELECT ON {dbName}.v_expProd"); + } } } catch (Exception exc) diff --git a/EgtBEAMWALL.DataLayer/DatabaseModels/MigrationHistoryModel.cs b/EgtBEAMWALL.DataLayer/DatabaseModels/MigrationHistoryModel.cs new file mode 100644 index 00000000..e439f311 --- /dev/null +++ b/EgtBEAMWALL.DataLayer/DatabaseModels/MigrationHistoryModel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EgtBEAMWALL.DataLayer.DatabaseModels +{ + /// + /// Tabella migrations del DB + /// + [NotMapped] + public class MigrationHistoryModel + { + #region Public Properties + + public string MigrationId { get; set; } = ""; + + public string ProductVersion { get; set; } = ""; + + #endregion Public Properties + } +} diff --git a/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj b/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj index eb2011b7..d302afd2 100644 --- a/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj +++ b/EgtBEAMWALL.DataLayer/EgtBEAMWALL.DataLayer.csproj @@ -163,6 +163,7 @@ +