I recently wrote a WPF application with code first back-end (SQL CE 4.0 database). The application is now out in the wild and is being used by non-technical people.
I have made some changes and I need to add a migration to reflect the changes, which I have done successfully.  I can get this to work fine on my local machine by simply using the Update-Database command.
How will this work when I come to deploy the update? I can't seem to figure how my customers databases will get migrated. Whenever I run on a machine that isn't my development machine, I simply get the following error;
Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.
P.s. I definitely don't want to enable Automatic Migrations ;)
Update ----
Here is my initialiser;
Database.SetInitializer(new Initializer());
Here is my actual initialiser;
public class Initializer : MigrateDatabaseToLatestVersion<Context, Configuration>
{
}
And here is the constructor for my Configuration class;
public Configuration()
{
    AutomaticMigrationsEnabled = false;
    DbMigrator migrator = new DbMigrator(this);
    if (migrator.GetPendingMigrations().Any())
    {
        _pendingMigrations = true;
        migrator.Update();
    }
}
You lack the initializer:
Database.SetInitializer(
  new MigrateDatabaseToLatestVersion<YourContext, YourMigrationsConfiguration>());
This will will force your customers databases to be upgraded when your application launches.
Another option which gives you more control over the migration process is to force it manually:
    YourMigrationsConfiguration cfg = new YourMigrationsConfiguration(); 
    cfg.TargetDatabase = 
       new DbConnectionInfo( 
          theConnectionString, 
          "provider" );
    DbMigrator dbMigrator = new DbMigrator( cfg );
    dbMigrator.Update();             
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With