using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Migrations; using MySql.Data.Entity; using System.Linq; using System.Text; using EgtBEAMWALL.DbDataLayer.DatabaseModels; using EgtBEAMWALL.DbDataLayer.Migrations; using System.ServiceProcess; //using EgtBEAMWALL.DataLayer.Migrations; //using EgtBEAMWALL.DataLayer.Controllers; namespace EgtBEAMWALL.DbDataLayer { [DbConfigurationType(typeof(MySqlEFConfiguration))] public class DatabaseContext : DbContext { /// /// BTLParts management /// public DbSet BTLPartList { get; set; } /// /// Parts management /// public DbSet ProdList { get; set; } /// /// Parts management /// public DbSet ProjList { get; set; } /// /// Parts management /// public DbSet RawPartList { get; set; } /// /// Parts management /// public DbSet PartList { get; set; } #if false /// /// Db data mode /// public static bool AdvDataModel { get; set; } = false; #endif //providerName="System.Data.EntityClient" public static string CONNECTION_STRING = $"server={Constants.DATABASE_SERV};port=3306;database={Constants.DATABASE_NAME};uid={Constants.DATABASE_USER};pwd={Constants.DATABASE_PWD};"; public DatabaseContext() : base(CONNECTION_STRING) { } public static DatabaseContext Create() { return new DatabaseContext(); } private static string getDbServiceName() { ServiceController[] services = ServiceController.GetServices(); var service = services.FirstOrDefault(s => s.ServiceName == "MariaDB"); if (service != null) return service.DisplayName; service = services.FirstOrDefault(s => s.ServiceName == "MySQL"); if (service != null) return service.DisplayName; return ""; } public static bool SetUpDbConnectionAndDbConfig() { try { String serviceName = getDbServiceName(); if (serviceName.Equals("")) { return false; } ServiceController service = new ServiceController(serviceName); try { TimeSpan timeout = TimeSpan.FromSeconds(Constants.DATABASE_PROCESS_TIMEOUT); service.WaitForStatus(ServiceControllerStatus.Running, timeout); } catch (Exception ex) { return false; } System.Data.Entity.Database.SetInitializer(null); var migrator = new DbMigrator(new Configuration()); if (migrator.GetPendingMigrations().Any()) { // Run migrations and seed. migrator.Update(); } } catch (Exception ex) { return false; } return true; } } }