首先在逆向工程代码中生成 MigrationHistory table
Generating MigrationHistory table in reverse engineered code first
我首先对现有数据库进行逆向工程以获取代码。接下来我为上下文启用迁移(基于代码的迁移)。当我创建初始添加迁移时,它工作正常并且适用于空数据库。
但我的要求是,由于它拥有的数据,我需要使用用于创建模型的相同数据库。
现在的难题是我如何实现基于代码的迁移。我的数据库没有迁移历史 table。因此,当我 运行 更新数据库时,它尝试创建现有的 tables 但失败了。
如何在迁移历史记录中捕获当前状态或指示 EF 以当前模式作为起点创建迁移历史记录。
我需要为初始设置打开自动迁移吗?请提出建议。
注意:我使用的是 EF 6。
您需要建立现有项目的基线迁移。所以你创建的第一个迁移应该是:
add-migration Initial -IgnoreChanges
忽略更改告诉 EF 只保存当前数据库的快照。现在任何后续迁移都将不包括现有表(仅包括更改)。这将允许您继续更新现有数据库,因为 EF 将在 __MigrationHistory 中看到记录或部署到新的空数据库。
我首先对现有数据库进行逆向工程以获取代码。接下来我为上下文启用迁移(基于代码的迁移)。当我创建初始添加迁移时,它工作正常并且适用于空数据库。 但我的要求是,由于它拥有的数据,我需要使用用于创建模型的相同数据库。
现在的难题是我如何实现基于代码的迁移。我的数据库没有迁移历史 table。因此,当我 运行 更新数据库时,它尝试创建现有的 tables 但失败了。
如何在迁移历史记录中捕获当前状态或指示 EF 以当前模式作为起点创建迁移历史记录。
我需要为初始设置打开自动迁移吗?请提出建议。
注意:我使用的是 EF 6。
您需要建立现有项目的基线迁移。所以你创建的第一个迁移应该是:
add-migration Initial -IgnoreChanges
忽略更改告诉 EF 只保存当前数据库的快照。现在任何后续迁移都将不包括现有表(仅包括更改)。这将允许您继续更新现有数据库,因为 EF 将在 __MigrationHistory 中看到记录或部署到新的空数据库。