Exemple #1
0
        public DbContextOptionsBuilder Extend(
            DbContextOptionsBuilder optionsBuilder,
            IDatabaseConnectionStringFactory connectionStringFactory,
            string assemblyName)
        {
            return(optionsBuilder.UseMySql(
                       connectionStringFactory.Create(),
                       sqlOptions =>
            {
                sqlOptions.MigrationsAssembly(assemblyName);

                sqlOptions.ServerVersion(
                    new Version(
                        _options.Major,
                        _options.Minor,
                        _options.Build),
                    ServerType.MySql);

                sqlOptions.EnableRetryOnFailure(
                    15,
                    TimeSpan.FromSeconds(30),
                    null);
            })
                   .EnableSensitiveDataLogging());
        }
        public FactoryForConfigurationDb()
        {
            _config = new ConfigurationBuilder()
                      .SetBasePath(Directory.GetCurrentDirectory())
                      .Build();

            _extendOptionsBuilder      = new InMemoryDbContextOptionsBuilderFactory();
            _dbConnectionStringFactory = new NoOpDatabaseConnectionStringFactory();
        }
Exemple #3
0
 public DbContextOptionsBuilder Extend(
     DbContextOptionsBuilder optionsBuilder,
     IDatabaseConnectionStringFactory connectionStringFactory,
     string assemblyName)
 {
     return(optionsBuilder.UseSqlite(
                "Data Source=App_Data\\localdb.db",
                sqlOptions => { sqlOptions.MigrationsAssembly(assemblyName); }));
 }
        public ContextFactoryForApplicationDb()
        {
            _config = new ConfigurationBuilder()
                      .SetBasePath(Directory.GetCurrentDirectory())
                      .AddJsonFile("appsettings.json")
                      .AddUserSecrets <Startup>()
                      .Build();

            _extendOptionsBuilder      = new SqlServerDbContextOptionsBuilderFactory();
            _dbConnectionStringFactory = new SqlServerDatabaseConnectionStringFactory(_config);
        }
Exemple #5
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);
        }
Exemple #6
0
 public DbContextOptionsBuilder Extend(
     DbContextOptionsBuilder optionsBuilder,
     IDatabaseConnectionStringFactory connectionStringFactory,
     string assemblyName)
 {
     return(optionsBuilder.UseSqlServer(
                connectionStringFactory.Create(),
                sqlOptions =>
     {
         sqlOptions.MigrationsAssembly(assemblyName);
         sqlOptions.EnableRetryOnFailure(
             maxRetryCount: 15,
             maxRetryDelay: TimeSpan.FromSeconds(30),
             errorNumbersToAdd: null);
     })
            .EnableSensitiveDataLogging());
 }
 protected DesignTimeDbContextFactoryBase()
 {
     Config = BuildConfig();
     ExtendOptionsBuilder      = BuildExtendOptionsBuilder();
     DbConnectionStringFactory = BuildDbConnectionStringFactory();
 }