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}");
            }
        }
예제 #2
0
파일: Program.cs 프로젝트: aimenux/EF6Demo
        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);
        }