Lea*_*ner 2 sql-server sqlite entity-framework-core .net-core asp.net-core
我有一个简单的项目,最初使用SQL Server作为EF Core和Code-First方法的后端(遵循本教程:https : //docs.microsoft.com/zh-cn/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的答案中所述生成两组迁移,然后将它们组合为一个迁移集。
例如,一Id列可能看起来像这样:
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn)
.Annotation("Sqlite:Autoincrement", true);
Run Code Online (Sandbox Code Playgroud)
您还可以有条件地执行后端之间可能根本不同的操作:
if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.SqlServer")
{
// TODO
}
else if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.Sqlite")
{
// TODO
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
950 次 |
| 最近记录: |