public static IServiceCollection AddEfCoreSqlServerDb(this IServiceCollection services) { services.AddDbContextPool <DbContext, AppDbContext>((sp, o) => { IExtendDbContextOptionsBuilder extendOptionsBuilder = sp.GetRequiredService <IExtendDbContextOptionsBuilder>(); IDbConnStringFactory connStringFactory = sp.GetRequiredService <IDbConnStringFactory>(); extendOptionsBuilder.Extend(o, connStringFactory, string.Empty); }); services.Replace( ServiceDescriptor.Scoped < IDbConnStringFactory, SqlServerConnectionStringFactory>()); services.Replace( ServiceDescriptor.Scoped < IExtendDbContextOptionsBuilder, SqlServerDbContextOptionsBuilder>()); services.Replace( ServiceDescriptor.Scoped < IRepositoryFactory, DefaultRepositoryFactory>()); services.Replace( ServiceDescriptor.Scoped < DatabaseMigration, SqlServerDatabaseMigration>()); return(services); }
public FactoryForConfigurationDb() { _config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .Build(); _extendOptionsBuilder = new InMemoryDbContextOptionsBuilderFactory(); _dbConnectionStringFactory = new NoOpDatabaseConnectionStringFactory(); }
public ContextFactoryForApplicationDb() { _config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddUserSecrets <Startup>() .Build(); _extendOptionsBuilder = new SqlServerDbContextOptionsBuilderFactory(); _dbConnectionStringFactory = new SqlServerDatabaseConnectionStringFactory(_config); }
public static IServiceCollection AddMiniService(this IServiceCollection services, Assembly startupAssembly) { ServiceProvider serviceProvider = services.BuildServiceProvider(); IConfiguration config = serviceProvider.GetService <IConfiguration>(); IExtendDbContextOptionsBuilder extendOptionsBuilder = serviceProvider.GetService <IExtendDbContextOptionsBuilder>(); IDatabaseConnectionStringFactory dbConnectionStringFactory = serviceProvider.GetService <IDatabaseConnectionStringFactory>(); services.AddEfCore(); services.AddRouting(options => options.LowercaseUrls = true); services.AddOptions() .Configure <PersistenceOption>(config.GetSection("EfCore")); void optionsBuilderAction(DbContextOptionsBuilder optionsBuilder) { extendOptionsBuilder.Extend( optionsBuilder, dbConnectionStringFactory, startupAssembly.GetName().Name); } services.AddDbContext <ApplicationDbContext>(options => optionsBuilderAction(options)); services.AddScoped <DbContext>(resolver => resolver.GetRequiredService <ApplicationDbContext>()); services.AddHttpContextAccessor(); services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton <IActionContextAccessor, ActionContextAccessor>(); services.AddScoped <IUrlHelper>(implementationFactory => { ActionContext actionContext = implementationFactory.GetService <IActionContextAccessor>().ActionContext; return(new UrlHelper(actionContext)); }); services.AddSingleton(typeof(RestClient), typeof(RestClient)); services.AddMvcCore().AddVersionedApiExplorer( options => { options.GroupNameFormat = "'v'VVV"; options.SubstituteApiVersionInUrl = true; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddApiVersioning(o => { o.ReportApiVersions = true; }); return(services); }
protected DesignTimeDbContextFactoryBase() { Config = BuildConfig(); ExtendOptionsBuilder = BuildExtendOptionsBuilder(); DbConnectionStringFactory = BuildDbConnectionStringFactory(); }