예제 #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);
        }
 public DbContextOptionsBuilder Extend(
     DbContextOptionsBuilder optionsBuilder,
     IDbConnStringFactory connStringFactory,
     string assemblyName)
 {
     return(optionsBuilder.UseInMemoryDatabase("default_db"));
 }
예제 #3
0
 public DbContextOptionsBuilder Extend(
     DbContextOptionsBuilder optionsBuilder,
     IDbConnStringFactory connStringFactory,
     string assemblyName)
 {
     return(optionsBuilder.UseMySql(
                connStringFactory.Create(),
                sqlOptions =>
     {
         sqlOptions.MigrationsAssembly(assemblyName);
         sqlOptions.ServerVersion(_options.DbInfo);
         sqlOptions.EnableRetryOnFailure(15, TimeSpan.FromSeconds(30), null);
     })
            .EnableSensitiveDataLogging());
 }
예제 #4
0
        public DbContextOptionsBuilder Extend(DbContextOptionsBuilder optionsBuilder,
                                              IDbConnStringFactory connectionStringFactory,
                                              string assemblyName)
        {
            var migrationFromAssemblyName = !string.IsNullOrWhiteSpace(assemblyName)
                ? assemblyName
                : Assembly.GetExecutingAssembly().FullName;

            return(optionsBuilder.UseSqlServer(
                       connectionStringFactory.Create(),
                       sqlServerOptionsAction =>
            {
                sqlServerOptionsAction.MigrationsAssembly(migrationFromAssemblyName);
                //sqlServerOptionsAction.EnableRetryOnFailure(
                //    15,
                //    TimeSpan.FromSeconds(30),
                //    null);
            }
                       ));
        }
        public DbContextOptionsBuilder Extend(DbContextOptionsBuilder optionsBuilder,
                                              IDbConnStringFactory connectionStringFactory,
                                              string assemblyName)
        {
            string migrationFromAssemblyName =
                !string.IsNullOrWhiteSpace(assemblyName) ? assemblyName : Assembly.GetExecutingAssembly().FullName
            ;

            return(optionsBuilder.UseSqlServer(
                       connectionString: connectionStringFactory.Create(),
                       sqlServerOptionsAction: sqlServerOptionsAction =>
            {
                sqlServerOptionsAction.MigrationsAssembly(migrationFromAssemblyName);
                sqlServerOptionsAction.EnableRetryOnFailure(
                    maxRetryCount: 15,
                    maxRetryDelay: TimeSpan.FromSeconds(30),
                    errorNumbersToAdd: null
                    );
            }
                       ));
        }