private static IDatabaseInitializer <TContext> Create <TContext, TSeeder>(DatabaseInitializerType initializerType) where TContext : DbContext where TSeeder : IInitializerSeeder <TContext>, new() { switch (initializerType) { case DatabaseInitializerType.Nothing: return(new NullDatabaseInitializer <TContext>()); case DatabaseInitializerType.DropCreateAlways: return(new DropCreateDatabaseAlwaysInitializer <TContext, TSeeder>()); case DatabaseInitializerType.CreateIfNotExists: return(new CreateDatabaseIfNotExistsInitializer <TContext, TSeeder>()); case DatabaseInitializerType.NoPendingMigrations: return(new NoPendingMigrationsInitializer <TContext, TSeeder, DisableMigrationsConfiguration <TContext> >()); case DatabaseInitializerType.MigrateDatabaseToLatestVersion: return(new MigrateDatabaseToLatestVersionInitializer <TContext, TSeeder, EnableMigrationsConfiguration <TContext> >()); case DatabaseInitializerType.DropCreateDatabaseIfModelChanges: return(new DropCreateDatabaseIfModelChangesInitializer <TContext, TSeeder>()); default: throw new ArgumentOutOfRangeException($"Unsupported initializer type {initializerType}"); } }
private static void Run <TContext>(bool withSeeder) where TContext : AbstractDbContextForInsurance, new() { const DatabaseInitializerType initializerType = DatabaseInitializerType.DropCreateAlways; if (withSeeder) { DatabaseInitializerStrategy.Initialize <TContext, RandomInsuranceSeeder <TContext> >(initializerType); } else { DatabaseInitializerStrategy.Initialize <TContext, EmptyInsuranceSeeder <TContext> >(initializerType); } using (var context = new TContext()) { var providers = context.Providers.ToList(); foreach (var provider in providers) { Console.WriteLine($"Provider id {provider.Id} has code {provider.ProviderCode}"); } var insurances = context.Insurances.ToList(); foreach (var insurance in insurances) { Console.WriteLine($"Insurance id {insurance.Id} has code {insurance.InsuranceCode}"); } } }
public static void Initialize <TContext, TSeeder>(DatabaseInitializerType initializerType) where TContext : DbContext where TSeeder : IInitializerSeeder <TContext>, new() { var initializer = Create <TContext, TSeeder>(initializerType); initializer.CloseOpenedConnections(); Database.SetInitializer(initializer); }