我有一个简单的项目,我最初使用 SQL Server 作为后端,采用 EF Core 和 Code-First 方法(遵循本教程:https://learn.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db)
现在我想将实现切换到 SQLite。我以为我可以从 SQL Server 运行初始迁移以创建数据库并将其应用到 SQLite。似乎它不能正常工作:例如。未应用主键的自动增量,然后我看到一些不一致(sqlite 提示 'int'
应该是 'INTEGER'
)等等。
那么,这是否意味着迁移依赖于后端?如果是,那么不应该在嵌套文件夹中创建它们(例如 ./Migrations/SQLServer
)吗?
谁能解释一下这是如何工作的?
注意:抱歉,我是 EF Code-First 和迁移的新手...谢谢!
最佳答案
Add-Migration
/dotnet ef migrations add
命令生成的迁移是特定于后端的,但您可以手动编辑它们以使其与多个后端兼容.最简单的方法是生成两组迁移,如 @alwayslearning's answer 中所述。然后将它们组合成一个迁移集。
例如,Id
列可能如下所示:
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn)
.Annotation("Sqlite:Autoincrement", true);
您还可以有条件地执行后端之间可能根本不同的事情:
if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.SqlServer")
{
// TODO
}
else if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.Sqlite")
{
// TODO
}
关于sql-server - EF Core - SQLServer 迁移是否适用于 SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587067/