我使用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环境中的项目)。
答案 0 :(得分:0)
好的,似乎__MigrationHistory表必须位于架构dbo
中。 EF迁移将在创建数据库时使用数据库的默认模式(在我的情况下称为“项目”),然后在调用Update-Database
时,它将不会查询该表,但假定从未应用任何迁移分贝。
当我手动将架构更改为dbo时,它的工作方式应该如此。