繁体   English   中英

实体框架代码首次迁移生产(WPF应用程序)

[英]Entity framework code first migrations production (WPF application)

我最近用代码第一个后端(SQL CE 4.0数据库)编写了一个WPF应用程序。 该应用程序现已外出,正在被非技术人员使用。

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

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

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

Ps我绝对不想启用自动迁移;)

更新----

这是我的初始化者;

Database.SetInitializer(new Initializer());

这是我的实际初始化者;

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

这是我的Configuration类的构造函数;

public Configuration()
{
    AutomaticMigrationsEnabled = false;

    DbMigrator migrator = new DbMigrator(this);

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

你缺少初始化程序:

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

这将强制您的客户数据库在您的应用程序启动时升级。

另一个可以让您更好地控制迁移过程的选项是手动强制它:

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

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

我遇到了类似的问题,我在这个问题上写了一些关于它的内容: 手动更改迁移文件并保持兼容__migrationhistory记录

我来到这里希望有一个解决方案,最终这篇文章帮助我理解并解决了它: http//www.ladislavmrnka.com/2012/03/ef-4-3-migrations-and-existing-database/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM