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

本文关键字:数据库 运行时 迁移 | 更新日期: 2023-09-27 18:07:35

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

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

对我来说,问题是添加迁移命令只通过包管理器控制台执行,因为我没有在我的app.config下设置连接字符串,实体迁移怎么可能知道我的数据库在哪个版本?

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

也许实体迁移只是不打算在包管理器控制台执行,或者使用动态连接字符串,但我需要确定我在做什么。

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

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

关于你的问题- ef识别迁移数据库是非常简单的。它在数据库中使用__MigrationHistory表。那里有已经应用了哪些迁移的信息(通过MigrationId)。当前数据库和应用给定迁移后应该产生的数据库的状态通过存储在迁移的resx文件中键"Target"下的哈希值进行比较。