如何在多个数据库中使用EF 4.3显式迁移(dev,staging,prod)

时间:2012-05-31 15:34:22

标签: entity-framework-4 ef-code-first database-migration ef-migrations

我使用EF 4.3进行显式迁移。定义新的迁移并在我的本地dev db上调用Update-Database时,一切正常,只有未应用的迁移才会应用于db。

但是当我尝试迁移另一个db(与迁移之前的dev db处于相同状态)时

Update-Database -ConnectionStringName=MyProdConnectionStringName

似乎忽略了db状态和现有的__MigrationHistory表,并且ef将所有迁移应用到我的prod db,导致失败,因为那里已经存在一些表。

也许知道相关的是,我使用[Table("TabName", Schema = "stepid")]的表格使用自定义架构。 __MigrationHistory表具有数据库的默认架构(我的开发机器上的dbo和我的prod环境中的项目)。

1 个答案:

答案 0 :(得分:0)

好的,似乎__MigrationHistory表必须位于架构dbo中。 EF迁移将在创建数据库时使用数据库的默认模式(在我的情况下称为“项目”),然后在调用Update-Database时,它将不会查询该表,但假定从未应用任何迁移分贝。

当我手动将架构更改为dbo时,它的工作方式应该如此。