コード例 #1
0
        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);
        }
コード例 #2
0
        public FactoryForConfigurationDb()
        {
            _config = new ConfigurationBuilder()
                      .SetBasePath(Directory.GetCurrentDirectory())
                      .Build();

            _extendOptionsBuilder      = new InMemoryDbContextOptionsBuilderFactory();
            _dbConnectionStringFactory = new NoOpDatabaseConnectionStringFactory();
        }
コード例 #3
0
        public ContextFactoryForApplicationDb()
        {
            _config = new ConfigurationBuilder()
                      .SetBasePath(Directory.GetCurrentDirectory())
                      .AddJsonFile("appsettings.json")
                      .AddUserSecrets <Startup>()
                      .Build();

            _extendOptionsBuilder      = new SqlServerDbContextOptionsBuilderFactory();
            _dbConnectionStringFactory = new SqlServerDatabaseConnectionStringFactory(_config);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 protected DesignTimeDbContextFactoryBase()
 {
     Config = BuildConfig();
     ExtendOptionsBuilder      = BuildExtendOptionsBuilder();
     DbConnectionStringFactory = BuildDbConnectionStringFactory();
 }