public static async Task Main(string[] args) { // Use args in application new ArgsHelper().SetEnvironmentByArgs(args); var services = new ServiceCollection(); // Setup AppSettings services = await SetupAppSettings.FirstStepToAddSingleton(services); // Inject services RegisterDependencies.Configure(services); var serviceProvider = services.BuildServiceProvider(); var appSettings = serviceProvider.GetRequiredService <AppSettings>(); services.AddMonitoringWorkerService(appSettings, AppSettings.StarskyAppType.Importer); services.AddApplicationInsightsLogging(appSettings); new SetupDatabaseTypes(appSettings, services).BuilderDb(); serviceProvider = services.BuildServiceProvider(); var import = serviceProvider.GetService <IImport>(); var console = serviceProvider.GetRequiredService <IConsole>(); var exifToolDownload = serviceProvider.GetRequiredService <IExifToolDownload>(); var webLogger = serviceProvider.GetRequiredService <IWebLogger>(); // Migrations before importing await RunMigrations.Run(serviceProvider.GetService <ApplicationDbContext>(), webLogger, appSettings); // Help and other Command Line Tools args are included in the ImporterCli await new ImportCli(import, appSettings, console, exifToolDownload).Importer(args); await new FlushApplicationInsights(serviceProvider, appSettings, webLogger).FlushAsync(); }
/// <summary> /// Run the latest migration on the database. /// To start over with a SQLite database please remove it and /// it will add a new one /// </summary> private async Task EfCoreMigrationsOnProject(IApplicationBuilder app) { using var serviceScope = app.ApplicationServices .GetRequiredService <IServiceScopeFactory>() .CreateScope(); await RunMigrations.Run(serviceScope); }
public async Task MySqlException() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "MovieListDatabase") .Options; Assert.IsNotNull(options); await RunMigrations.Run( new AppDbMySqlException(options), new FakeIWebLogger(), new AppSettings { DatabaseType = AppSettings.DatabaseTypeList.Mysql }, 1); // should not crash }
/// <summary> /// Starsky Admin CLI to manage user admin tasks /// </summary> /// <param name="args">use -h to see all options</param> internal static async Task Main(string[] args) { // Use args in application new ArgsHelper().SetEnvironmentByArgs(args); var services = new ServiceCollection(); // Setup AppSettings services = await SetupAppSettings.FirstStepToAddSingleton(services); // Inject services RegisterDependencies.Configure(services); var serviceProvider = services.BuildServiceProvider(); var appSettings = serviceProvider.GetRequiredService <AppSettings>(); services.AddMonitoringWorkerService(appSettings, AppSettings.StarskyAppType.Geo); services.AddApplicationInsightsLogging(appSettings); var webLogger = serviceProvider.GetRequiredService <IWebLogger>(); new SetupDatabaseTypes(appSettings, services).BuilderDb(); serviceProvider = services.BuildServiceProvider(); // Use args in application appSettings.Verbose = ArgsHelper.NeedVerbose(args); var userManager = serviceProvider.GetService <IUserManager>(); appSettings.ApplicationType = AppSettings.StarskyAppType.Admin; if (new ArgsHelper().NeedHelp(args)) { new ArgsHelper(appSettings).NeedHelpShowDialog(); return; } await RunMigrations.Run(serviceProvider.GetService <ApplicationDbContext>(), webLogger, appSettings); await new ConsoleAdmin(userManager, new ConsoleWrapper()).Tool( ArgsHelper.GetName(args), ArgsHelper.GetUserInputPassword(args)); await new FlushApplicationInsights(serviceProvider).FlushAsync(); }
public async Task Test() { IServiceCollection services = new ServiceCollection(); services.AddSingleton <IWebLogger, FakeIWebLogger>(); var efServiceProvider = new ServiceCollection().AddEntityFrameworkInMemoryDatabase().BuildServiceProvider(); services .AddDbContext <ApplicationDbContext>(b => b.UseInMemoryDatabase("test1234").UseInternalServiceProvider(efServiceProvider)); var serviceProvider = services.BuildServiceProvider(); var serviceScopeFactory = serviceProvider.GetRequiredService <IServiceScopeFactory>(); Assert.IsNotNull(serviceScopeFactory); await RunMigrations.Run(serviceScopeFactory.CreateScope(), 1); // expect exception: Relational-specific methods can only be used when the context is using a relational database provider. }