Beispiel #1
0
        static void Main(string[] args)
        {
            var migrationsAssembly = typeof(Program).GetTypeInfo().Assembly.GetName().Name;
            var services           = new ServiceCollection();

            IConfigurationRoot configuration = new ConfigurationBuilder()
                                               .SetBasePath(Directory.GetCurrentDirectory())
                                               .AddJsonFile("appsettings.json")
                                               // .AddEnvironmentVariables()
                                               .Build();

            var connectionString = configuration.GetConnectionString("DefaultConnection");
            var serverUrl        = configuration["serverUrl"];

            services.AddDbContext <ApplicationDbContext>(
                options =>

                // options.UseSqlite(connectionString));
                // options.UseSqlServer(connectionString));
                options.UseNpgsql(connectionString, a => a.MigrationsAssembly(migrationsAssembly)));

            services.AddIdentity <ApplicationUser, IdentityRole>().AddEntityFrameworkStores <ApplicationDbContext>()
            .AddDefaultTokenProviders();

            // Manual Setup
            services.AddDbContext <ConfigurationDbContext>(options =>
                                                           //options.UseSqlite(Configuration.GetConnectionString("SqlLite")));
                                                           //options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
                                                           options.UseNpgsql(connectionString, a => a.MigrationsAssembly(migrationsAssembly)));
            services.AddTransient <IdentityServer4.EntityFramework.Options.ConfigurationStoreOptions>();


            services.AddDbContext <PersistedGrantDbContext>(options =>
                                                            //options.UseSqlite(Configuration.GetConnectionString("SqlLite")));
                                                            //options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
                                                            options.UseNpgsql(connectionString, a => a.MigrationsAssembly(migrationsAssembly)));
            services.AddTransient <IdentityServer4.EntityFramework.Options.OperationalStoreOptions>();

            services.AddTransient <ISeedData, SeedData>();

            using (var serviceProvider = services.BuildServiceProvider())
            {
                using (var scope = serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope())
                {
                    ISeedData seedData = scope.ServiceProvider.GetService <ISeedData>();
                    seedData.SeedIdentity();
                    seedData.SeedIdentityServer(serverUrl);
                }
            }
        }