在运行时迁移不同的数据库

时间:2014-06-09 14:08:13

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

我可能在这里做错了,如果是这样,请指出正确的方向。

我正在编写一个迁移应用程序,我希望能够在运行时键入我想要使用的连接字符串,并且能够更新不同的数据库(可能每个数据库用于不同的版本)。

我的问题是Add-Migration命令只能通过Package Manager控制台执行,因为我没有在app.config下设置连接字符串,实体迁移怎么可能?知道我的数据库是哪个版本的?

我在为某个连接字符串运行初始迁移后遇到了这个问题(它正确地创建了数据库和表),但是当我尝试添加第二个迁移文件之后,我收到一个错误,说有其他正在等待迁移。

也许实体迁移并不意味着要从包管理器控制台或动态连接字符串执行,但我需要确定我在做什么。

1 个答案:

答案 0 :(得分:2)

已经准备好了这样的应用程序 - 浏览有关migrate.exe的信息:http://msdn.microsoft.com/en-us/data/jj618307.aspx

关于你的问题 - ef认识到哪个迁移数据库非常简单。它用于数据库中的__MigrationHistory表。它有已经应用迁移的信息(通过MigrationId)。应用给定迁移后应该生成的当前数据库和数据库的状态将通过存储在迁移的resx文件中的哈希值与“Target”关键字进行比较。