我可能在这里做错了事情,如果是这样,请指出正确的方向。
我正在编写一个迁移应用程序,我希望能够在运行时键入我想要使用的连接字符串,并且能够更新不同的数据库(可能每个数据库都有不同的版本)。
对我来说,问题是 Add-Migration 命令仅通过包管理器控制台执行,并且由于我在 app.config 下没有设置连接字符串,实体迁移怎么可能知道我的数据库是哪个版本?
在对某个连接字符串运行初始迁移(它正确创建了数据库和表)后,我陷入了这个问题,但是之后,当我尝试添加第二个迁移文件时,我收到一条错误,说还有其他迁移待处理。
也许实体迁移并不意味着从包管理器控制台或动态连接字符串中执行,但我需要确定我在做什么。
最佳答案
已经准备好了这样的应用程序 - 浏览有关 migrate.exe 的信息:http://msdn.microsoft.com/en-us/data/jj618307.aspx 。
关于你的问题 - ef 识别哪个迁移数据库非常简单。它用于数据库中的 __MigrationHistory 表。其中包含已应用哪些迁移的信息(通过 MigrationId)。当前数据库的状态和应用给定迁移后应产生的数据库的状态通过存储在迁移的 resx 文件中键“Target”下的哈希值进行比较。
关于c# - 在运行时迁移不同的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122050/