运行 entity framework 不同数据库上的代码首次迁移
Run entity framework code first migration on different database
我首先使用 EF 代码创建我的数据库,该应用程序现在正在生产和测试中,所以我需要 运行 迁移以在我的模型更改时更新数据库。
我已经根据标准说明设置了迁移,它运行良好,针对开发数据库一。我还有第二个数据库,我想使其与当前代码库保持一致,但第二个数据库处于未知状态。
我想知道的是我可以针对不同的数据库生成迁移 class 吗?我该怎么做?除了我在设置迁移时指定的原始数据库之外,我似乎无法针对任何其他内容生成迁移 class。我已经更改了 app.config 中的数据库名称,但在进行迁移时它仍然会查看原始数据库。
如何明确指定要针对哪个数据库生成迁移脚本?
除了检查是否已应用迁移外,迁移不会查看数据库 (__MigrationHistory)。当您设置迁移时,它会拍摄代码模型的快照并在前进时使用它。因此,如果您想将处于未知状态的数据库置于迁移控制之下,您将需要使其与代码模型相匹配。
您可以执行与此类似的操作:从当前数据库 (update-database -Script –SourceMigration $InitialDatabase
) 创建一个 idempotent script。这将等同于创建和更新数据库所需的所有迁移。由于您有一个存在其中某些对象的现有数据库,因此您需要通过删除已存在项目的代码来手动调整脚本。一旦你得到它应用,你应该有一个与你的模型匹配的数据库与填充 __MigrationHistory table.
另一种选择是使用 schema compare utility 使数据库匹配,然后将 __MigrationHistory table 复制过来。
我首先使用 EF 代码创建我的数据库,该应用程序现在正在生产和测试中,所以我需要 运行 迁移以在我的模型更改时更新数据库。
我已经根据标准说明设置了迁移,它运行良好,针对开发数据库一。我还有第二个数据库,我想使其与当前代码库保持一致,但第二个数据库处于未知状态。
我想知道的是我可以针对不同的数据库生成迁移 class 吗?我该怎么做?除了我在设置迁移时指定的原始数据库之外,我似乎无法针对任何其他内容生成迁移 class。我已经更改了 app.config 中的数据库名称,但在进行迁移时它仍然会查看原始数据库。
如何明确指定要针对哪个数据库生成迁移脚本?
除了检查是否已应用迁移外,迁移不会查看数据库 (__MigrationHistory)。当您设置迁移时,它会拍摄代码模型的快照并在前进时使用它。因此,如果您想将处于未知状态的数据库置于迁移控制之下,您将需要使其与代码模型相匹配。
您可以执行与此类似的操作:从当前数据库 (update-database -Script –SourceMigration $InitialDatabase
) 创建一个 idempotent script。这将等同于创建和更新数据库所需的所有迁移。由于您有一个存在其中某些对象的现有数据库,因此您需要通过删除已存在项目的代码来手动调整脚本。一旦你得到它应用,你应该有一个与你的模型匹配的数据库与填充 __MigrationHistory table.
另一种选择是使用 schema compare utility 使数据库匹配,然后将 __MigrationHistory table 复制过来。