EF - Code First - Automatic Updates Database

I want to use automatic migrations in my code, but every time I change something in the model, I have to run it update-Database

manually. Can I do it automatically?

This is the configuration:

public class Configuration : DbMigrationsConfiguration<ManualContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }
    ...
}

      

And AppActivator

:

[assembly: WebActivator.PreApplicationStartMethod(typeof(AppActivator), "PreStart")]
[assembly: PostApplicationStartMethod(typeof(AppActivator), "PostStart")]
[assembly: ApplicationShutdownMethod(typeof(AppActivator), "Stop")]

namespace Manual.Web
{
  public static class AppActivator
  {
    public static void PreStart()
    {
      Database.SetInitializer(
               new MigrateDatabaseToLatestVersion<ManualContext,Configuration>());
      Database.SetInitializer(new ManualDbInitializer());

      MeasurementConfig.RegisterUnits();
      MiniProfilerPreStart();
    }
    ...
  }

      

And the ManualDbInitializer is for the seed (when creating the DB for the first time):

public class ManualDbInitializer : CreateDatabaseIfNotExists<ManualContext>
{
    protected override void Seed(ManualContext context)
    {
        ManualDbInitializerSeed.SeedForDB(context);
    }
}

      

+3


source to share


1 answer


When deploying an application, you can automatically update the database (applying any pending migrations) when the application starts. You can do this by registering the MigrateDatabaseToLatestVersion database initializer. The database initializer just contains some logic that is used to set up the database correctly. This logic is run the first time the context is used in the application process (AppDomain).



http://msdn.microsoft.com/en-us/data/jj591621#initializer

0


source







All Articles