public void DbSetup(DbSetupParameters parameters, DbContextOptionsBuilder options) { switch (parameters.TypeProvider) { case "Mysql": options.UseMySql(parameters.Connection, (b) => { #pragma warning disable EF1001 // Internal EF Core API usage. BasicSetup(b, parameters); #pragma warning restore EF1001 // Internal EF Core API usage. b.ServerVersion(Version.Parse(parameters.DbVersion), (bool)parameters.Extra ? ServerType.MariaDb : ServerType.MySql); }); break; case "Sqlite": break; case "Prgssql": break; case "Memory": options.UseInMemoryDatabase(parameters.Connection); break; // if the provider is unknow default: break; throw new NotSupportedException("The provider is not supported for " + parameters.TypeProvider); } }
public static IServiceCollection AddDbSetup <TContext>(this IServiceCollection services, DbSetupParameters parameters, IDatabaseSetup setup, bool devMode = false, bool poolMode = false) where TContext : DbContext { if (services is null) { throw new ArgumentNullException(nameof(services)); } if (poolMode) { services.AddDbContextPool <TContext>(builder => { setup.DbSetup(parameters, builder); EnableDevFeatures(builder, devMode); }); } else { services.AddDbContext <TContext>(builder => { setup.DbSetup(parameters, builder); EnableDevFeatures(builder, devMode); }); } return(services); }
private void BasicSetup <T, K>(RelationalDbContextOptionsBuilder <T, K> builder, DbSetupParameters parameters) where T : RelationalDbContextOptionsBuilder <T, K> where K : RelationalOptionsExtension, new() { if (parameters.Timeout != null) { builder.CommandTimeout(parameters.Timeout); } if (parameters.BacthMax != null) { builder.MaxBatchSize((int)parameters.BacthMax); } }