public ApplicationDbContext(SqlServerConnectionStringProvider stringProvider, DbContextOptions options) : base(options) { ConnectionStringProvider = stringProvider; }
public async Task InitializationAsync(IServiceCollection services, IConfiguration configuration) { var server = configuration["Connection:Server"]; var databaseName = configuration["Connection:DatabaseName"]; var userName = configuration["Connection:UserName"] ?? string.Empty; var password = configuration["Connection:Password"] ?? string.Empty; var stringProvider = new SqlServerConnectionStringProvider(); if (string.IsNullOrWhiteSpace(server) || string.IsNullOrWhiteSpace(databaseName)) { throw new DatabaseNotConfiguredException("Server or database not found"); } else { stringProvider.Server = server; stringProvider.DatabaseName = databaseName; } stringProvider.AuthenticationType = string.IsNullOrWhiteSpace(userName) ? AuthenticationType.Windows : AuthenticationType.MSSQLServer; stringProvider.Username = userName; stringProvider.Password = password; services.AddSingleton(stringProvider); services.AddDbContext <ApplicationDbContext>(); services.AddIdentity <User, IdentityRole>() .AddUserManager <UserIdentityManager>() .AddEntityFrameworkStores <ApplicationDbContext>(); var connectionFactory = new SqlServerConnectionFactory(stringProvider); var dataStorageProvider = new SqlServerDatabaseStorageProvider( connectionFactory, new SqlServerDatabaseStatusProvider(connectionFactory), new SqlServerDatabaseInfoProvider(connectionFactory), new SqlServerDatabaseStorageInfoProvider(connectionFactory)); var repFactory = new RepositoryFactory(new SqlServerDatabaseStorageService(dataStorageProvider)); services.AddSingleton(repFactory); services.AddScoped <UserBlockerService>(); using (var context = new ApplicationDbContext(stringProvider)) { var isCreated = await context.Database .EnsureCreatedAsync() .ConfigureAwait(continueOnCapturedContext: false); } var serviceProvider = services.BuildServiceProvider(); var userManager = serviceProvider.GetService <UserIdentityManager>(); var rolesRep = repFactory.CreateRoles(); var roles = await rolesRep.CreateDefaultsAsync() .ConfigureAwait(continueOnCapturedContext: false); var systemUser = new User { Email = AdminChecker.AdminName, UserName = AdminChecker.AdminName, }; var userExists = await userManager.FindByEmailAsync(systemUser.Email) .ConfigureAwait(continueOnCapturedContext: false); if (userExists == null) { var systemUserResult = await userManager.CreateAsync(systemUser) .ConfigureAwait(continueOnCapturedContext: false); await userManager.AddPasswordAsync(systemUser, "admin") .ConfigureAwait(continueOnCapturedContext: false); var userReferences = repFactory.CreateUsers(); var roleFilter = new RoleFilter(RoleType.Admin); var role = roles.FirstOrDefault(roleFilter.Predicate); await userReferences.AddAsync(new UserReferenceData(systemUser.Id, role)) .ConfigureAwait(continueOnCapturedContext: false); } }
public ApplicationDbContext(SqlServerConnectionStringProvider stringProvider) { ConnectionStringProvider = stringProvider; }