public void ConfigureDbContext(IServiceCollection services, string connectionString) { _connectionString = connectionString; services.AddDbContext <TrashInspectionPnDbContext>(o => o.UseMySql(connectionString, new MariaDbServerVersion( new Version(10, 4, 0)), mySqlOptionsAction: builder => { builder.EnableRetryOnFailure(); builder.MigrationsAssembly(PluginAssembly().FullName); })); TrashInspectionPnContextFactory contextFactory = new TrashInspectionPnContextFactory(); var context = contextFactory.CreateDbContext(new[] { connectionString }); context.Database.Migrate(); // Seed database SeedDatabase(connectionString); string temp = context.PluginConfigurationValues .SingleOrDefault(x => x.Name == "TrashInspectionBaseSettings:MaxParallelism")?.Value; _maxParallelism = string.IsNullOrEmpty(temp) ? 1 : int.Parse(temp); temp = context.PluginConfigurationValues .SingleOrDefault(x => x.Name == "TrashInspectionBaseSettings:NumberOfWorkers")?.Value; _numberOfWorkers = string.IsNullOrEmpty(temp) ? 1 : int.Parse(temp); _sdkConnectionString = context.PluginConfigurationValues .SingleOrDefault(x => x.Name == "TrashInspectionBaseSettings:SdkConnectionString")?.Value; }
public PluginPermissionsManager GetPermissionsManager(string connectionString) { var contextFactory = new TrashInspectionPnContextFactory(); var context = contextFactory.CreateDbContext(new[] { connectionString }); return(new PluginPermissionsManager(context)); }
public void SeedDatabase(string connectionString) { var contextFactory = new TrashInspectionPnContextFactory(); using (var context = contextFactory.CreateDbContext(new[] { connectionString })) { TrashInspectionPluginSeed.SeedData(context); } }
private void GetContext(string connectionStr) { var contextFactory = new TrashInspectionPnContextFactory(); DbContext = contextFactory.CreateDbContext(new[] { connectionStr }); DbContext.Database.Migrate(); DbContext.Database.EnsureCreated(); }
public void AddPluginConfig(IConfigurationBuilder builder, string connectionString) { var seedData = new TrashInspectionConfigurationSeedData(); var contextFactory = new TrashInspectionPnContextFactory(); builder.AddPluginConfiguration( connectionString, seedData, contextFactory); }
public TrashInspectionPnDbContext GetDbContext() { TrashInspectionPnContextFactory contextFactory = new TrashInspectionPnContextFactory(); return(contextFactory.CreateDbContext(new[] { ConnectionString })); }
public bool Start(string sdkConnectionString, string serviceLocation) { Console.WriteLine("[INF] TrashInspectionPlugin start called"); try { string dbNameSection; string dbPrefix; if (sdkConnectionString.ToLower().Contains("convert zero datetime")) { dbNameSection = Regex.Match(sdkConnectionString, @"(Database=\w*;)").Groups[0].Value; dbPrefix = Regex.Match(sdkConnectionString, @"Database=(\d*)_").Groups[1].Value; } else { dbNameSection = Regex.Match(sdkConnectionString, @"(Initial Catalog=\w*;)").Groups[0].Value; dbPrefix = Regex.Match(sdkConnectionString, @"Initial Catalog=(\d*)_").Groups[1].Value; } string pluginDbName = $"Initial Catalog={dbPrefix}_eform-angular-trashinspection-plugin;"; string connectionString = sdkConnectionString.Replace(dbNameSection, pluginDbName); if (!_coreAvailable && !_coreStatChanging) { _serviceLocation = serviceLocation; _coreStatChanging = true; if (string.IsNullOrEmpty(_serviceLocation)) { throw new ArgumentException("serviceLocation is not allowed to be null or empty"); } if (string.IsNullOrEmpty(connectionString)) { throw new ArgumentException("serverConnectionString is not allowed to be null or empty"); } TrashInspectionPnContextFactory contextFactory = new TrashInspectionPnContextFactory(); _dbContext = contextFactory.CreateDbContext(new[] { connectionString }); _dbContext.Database.Migrate(); _coreAvailable = true; _coreStatChanging = false; _dbContextHelper = new DbContextHelper(connectionString); startSdkCoreSqlOnly(sdkConnectionString); _container = new WindsorContainer(); _container.Register(Component.For <DbContextHelper>().Instance(_dbContextHelper)); _container.Register(Component.For <eFormCore.Core>().Instance(_sdkCore)); _container.Install( new RebusHandlerInstaller() , new RebusInstaller(connectionString, _maxParallelism, _numberOfWorkers) ); _bus = _container.Resolve <IBus>(); } Console.WriteLine("TrashInspectionPlugin started"); return(true); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.DarkRed; Console.WriteLine("Start failed " + ex.Message); throw ex; } }