Skip to content

An aggresive auto migrator tool for EF core 2.1 and above

License

Notifications You must be signed in to change notification settings

cyilcode/EFCoreAutoMigrator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NuGet DynamicQueryBuilder License

What ?

EFCoreAutoMigrator is an aggressive automatic migration tool that works with Entity Framework Core 2.1 and above. It basically recreates your database tables whenever it detects a change in your database schema.

Why ?

EFCoreAutoMigrator was built for speeding up the development stages of your applications. Since you don't need to deal with database migrations after you install this tool;

  • No migration files generated.
  • No more conflicts with your branch and your teammates.
  • Fixing database schema errors is a lot easier.

How ?

EFCoreAutoMigrator creates and stores a hash in your FileSystem or Database to check if you have any changes on your current schema by utilizing GenerateCreateScript function of EFCore 2.1+.

Installation

It is quite simple to install.

You can install EFCoreAutoMigrator from NuGet with the command below:

Install-Package EFCoreAutoMigrator

On ASP.NET Core Project

Program.cs

public static class Program
    {
        public static void Main(string[] args)
        {
            IWebHost server = BuildWebHost(args);
            var env = server.Services.GetService(typeof(IHostingEnvironment)) as IHostingEnvironment;

            // I would highly suggest you to not to use this tool in your production environment.
            // Since it will vaporize your whole database which you probably don't want :)
            if (!env.IsProduction())
            {
                using (IServiceScope serviceScope = server.Services.GetService<IServiceScopeFactory>().CreateScope())
                {
                    // Make sure that your DbContext is registered in your DI container.
                    MyDbContext myDbContext = serviceScope.ServiceProvider.GetService<MyDbContext>();
                    // Always protect your production/secure databases.
                    var secureDataSources = new SecureDataSource[] 
                    {
                        new SecureDataSource 
                        {
                            ServerAddress = "mysecure.database.net",
                            DatabaseName = "my-production-database"
                        }
                    };
                    
                    new AutoMigrator(myDbContext, secureDataSources).EnableAutoMigration(
                        false, MigrationModelHashStorageMode.Database, () =>
                    {
                        // Seed function here if you need
                    });
                }
            }

            server.Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }

TODO:

* Tests
* Further documentation

Releases

No releases published

Packages

No packages published