如何在EF Core代码优先迁移中进行数据迁移
本文关键字:迁移 数据 EF Core 代码 | 更新日期: 2023-09-27 17:58:29
我有一个Code First EF Core项目。
在模式迁移中,我需要将数据迁移到外部数据库。所以我不能依赖migrationBuilder.Sql()
。我需要做的是在本地数据库上运行一个查询,并将返回的数据插入到外部数据库中。换句话说,我想做这样的事情:
// Obviously this is pseudo-code; these interfaces mostly don't exist
protected override void Up(MigrationBuilder migrationBuilder)
{
var results = migrationBuilder.GetQueryResults("some query");
using (var extDb = new ExternalDb())
{
foreach (var row in results)
{
InsertToExternalDb(row, extDb);
}
}
}
但是我在MigrationBuilder
上找不到任何从当前数据库返回行的方法,我甚至找不到一种方法来获取连接字符串,从而可以向当前数据库编写原始ADO查询。
还有其他想法吗?我该怎么做?
该场景不属于EF Core 1.0.0的迁移能力范围。MigrationBuilder
API设计用于构建用于转换数据库模式的SQL,而不是设计用于处理多个数据库。
您可以在EF Core的源代码中查看迁移的实现,网址为https://github.com/aspnet/EntityFramework/tree/1.0.0/src/Microsoft.EntityFrameworkCore.Relational/Migrations.
要完成数据库之间的数据迁移,您需要在EF Core迁移之外编写自己的代码。