我想澄清一下,这是我正在使用的核心版本实体框架。
我想我知道答案,但这完全基于我多年前使用的其他ORM的假设。我的猜测是答案类似于"它取决于具体的数据库和使用的功能(键,约束等)"。
此外,我想澄清一点,我并不是在询问是否可以从不同数据库的模型生成迁移。我知道答案是肯定的。我问的是一组已经生成的迁移。
答案 0 :(得分:2)
一组迁移可以应用于不同的数据库类型。工具没有多大帮助(问题#1825),因此您可能需要手动编辑迁移文件。
是的,它确实取决于数据库支持的功能,因此阻力最小的路径是使用提供商可用的最低通用功能集。您可以使用注释和ActiveProvider
属性来影响特定于提供程序的配置。例如:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
table: "Blogs",
name: "Id",
nullable: false)
// Use AUTOINCREMENT on SQLite
.Annotation("Autoincrement", true)
// Use IDENTITY on SQL Server
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
if (ActiveProvider == "Microsoft.EntityFrameworkCore.SqlServer")
{
migrationBuilder.CreateSequence("SomeSequence");
}
}