2013-07-27 53 views
3

我最近编写了一个带代码第一后端(SQL CE 4.0数据库)的WPF应用程序。该应用程序现在处于疯狂状态,正在被非技术人员使用。实体框架代码第一次迁移生产(WPF应用程序)

我做了一些更改,我需要添加一个迁移以反映我已成功完成的更改。只需使用Update-Database命令,我就可以在本地机器上正常工作。

当我部署更新时,这将如何工作?我似乎无法确定我的客户数据库将如何迁移。每当我运行在不是我的开发机器的机器上时,我只是得到以下错误;

无法更新数据库以匹配当前模型,因为存在挂起的更改并且自动迁移已禁用。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移。

P.s.我绝对不希望启用自动迁移;)

更新----

这里是我的初始化器;

Database.SetInitializer(new Initializer()); 

这是我的实际初始化者;

public class Initializer : MigrateDatabaseToLatestVersion<Context, Configuration> 
{ 
} 

这里是我的配置类的构造函数;

public Configuration() 
{ 
    AutomaticMigrationsEnabled = false; 

    DbMigrator migrator = new DbMigrator(this); 

    if (migrator.GetPendingMigrations().Any()) 
    { 
     _pendingMigrations = true; 
     migrator.Update(); 
    } 
} 

回答

4

你缺乏初始化:

Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<YourContext, YourMigrationsConfiguration>()); 

这将迫使你的客户数据库进行升级时,你的应用程序启动。

,让你更好地控制迁移过程中的另一个选项是手动强制:

YourMigrationsConfiguration cfg = new YourMigrationsConfiguration(); 
    cfg.TargetDatabase = 
     new DbConnectionInfo( 
      theConnectionString, 
      "provider"); 

    DbMigrator dbMigrator = new DbMigrator(cfg); 
    dbMigrator.Update();    
+0

非常感谢评论。已经尝试过了。我上面更新了我的代码。 –

相关问题