12

我需要帮助来阐明 EF Code First Migrations 如何在生产机器上工作。我有一些实体类和 DbContext 派生类来访问实体。现在,我想执行以下几件事:

  • 当我的应用程序启动时,它必须创建数据库,如果数据库不存在;
  • 然后必须将数据库模式调整为模型;
  • 如果刚才创建了数据库,我想创建一些索引;
  • 另外,如果数据库刚刚创建,它必须由一些初始数据作为种子;
  • 所有这些事情都必须自动执行,无需任何 NUGET 命令或外部工具。

我读过一些关于迁移的文章,但它们主要关注 NUGET 的使用或运行时的纯自动数据库更新(通过MigrateDatabaseToLatestVersion)。我知道DbMigration类,但我不明白如何将MigrateDatabaseToLatestVersion策略和DbMigration.

更新。
事实上,我不能在项目中使用 NUGET,我需要能够“手动”进行迁移。

4

1 回答 1

24

只需使用MigrateDatabaseToLatestVersion.

当我的应用程序启动时,它必须创建数据库,如果数据库不存在;

MigrateDatabaseToLatestVersion会那样做

然后必须将数据库模式调整为模型;

MigrateDatabaseToLatestVersion会那样做

如果刚才创建了数据库,我想创建一些索引;

Sql为您的数据库和方法创建基于代码的初始迁移,Up以定义您需要的所有索引。

另外,如果数据库刚刚创建,它必须由一些初始数据作为种子;

再次用于Sql初始迁移或Seed迁移配置中的方法

所有这些事情都必须自动执行,无需任何 NUGET 命令或外部工具

NuGet 和命令将帮助您在设计时准备它(但您可以简单地引用所需的程序集并自己编写所有代码)。运行时不需要任何 powershell 命令。

DbMigratorMigrateDatabaseToLatestVersion适用于您不想使用并且想要控制代码迁移的场景。

于 2012-07-23T09:26:23.473 回答