1

我想在我的项目中引入 Code First 迁移,但我不确定如何将其部署到我的客户进行测试。到目前为止,事情一直很简单,我只是使用了一个CreateDatabaseIfNotExists初始化程序。现在,我有两种情况:

  1. 他删除了他现有的迁移前数据库,并使用初始化程序创建了一个新的迁移后数据库,我们从这里开始使用迁移来升级他的数据库。如果丢失,我可以使用MigrateDatabaseToLatestVersion初始化程序来创建数据库吗?

  2. 我只是部署我的代码并让它执行迁移。我不太确定MigrateDatabaseToLatestVersion这里是否需要使用 a 。这会将迁移前的数据库升级到适合迁移的数据库吗?

4

1 回答 1

3

这就是我在需要自动迁移时所做的;我希望这可以帮助您找到解决方案:

Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<ContextFileName, PathToMigrationsConfig>()
    );
Database.Initialize(false);

在迁移的配置文件中,我在构造函数中设置了以下内容

AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;

在配置文件中,您应该覆盖种子方法,如果没有,您可以添加它并填写您的种子数据。

只要不发生数据丢失,上面的操作就是创建/升级数据库到最新的。这应该允许您将代码交给客户端。


另一方面,对于生产系统,我通常会争论不这样做的意义。这有很多缺点。对于我无法控制的数据库,我还没有找到拒绝生成的脚本文件的客户端。

通过包管理器控制台添加迁移后,您可以使用以下命令获取此信息:

Update-database –script -verbose
于 2012-05-23T19:47:57.260 回答