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

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

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

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

对我来说,问题是 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/

相关文章:

c# - 不能将 lambda 表达式用作动态分派(dispatch)操作的参数,而不先将其转换为委托(delegate)或表达式树类型

c# - 更改 monthCalendar 上日期的颜色

c# - 如何使用 Microsoft Fakes 来填充异步任务方法?

c# - EF Code First 配置复制记录

c# - 使用 linq 加载除另一个集合之外的集合

c# - 通过 SQLCLR 使用 Rest API 并通过 SqlPipe 发送结果

c# - 重组分片的 UDP 数据包

c# - 编写此 linq 查询的更好方法是什么?

entity-framework - SQL Server 中的代码优先文件表

entity-framework - 如何管理开发数据库和生产数据库之间的 EF 迁移?