我目前正在使用EF Core Code First Migrations开发.Net Core应用程序.我正在 Windows和OS X之间进行开发(在家中使用Windows,在旅途中使用Mac),我正在尝试弄清楚当我在Windows和SQLite上时,如何使用SQL Server进行数据库迁移苹果电脑.
是否可以维护两组迁移并选择要应用的集合(无需单独指定每个迁移)?或者我是否需要创建单独的.Net Core应用程序/程序集并为dotnet ef数据库更新命令指定–assembly选项?
最佳答案 您有两种选择:
>使用两组迁移
>手动编辑迁移以使其与提供程序无关
多套
每个集合都需要在自己的程序集中.首先,生成第一个迁移并将其移动到新项目中.您可以在配置提供程序时配置迁移程序集.
optionsBuilder.UseSqlServer(
mssqlConnectionString
, x => x.MigrationsAssembly("MyApp.Migrations.SqlServer"));
//optionsBuilder.UseSqlite(
// sqliteConnectionString,
// x => x.MigrationsAssembly("MyApp.Migrations.Sqlite"));
我有a sample将迁移放在他们自己的程序集中,您可能也想将其用作参考.
供应商无关
要使迁移提供程序无关,请合并每个提供程序将生成的内容.例如,以下内容包含SQL Server和SQLite的注释.
migrationBuilder.CreateTable(
name: "People",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true)
.Annotation("SqlServer:ValueGenerationStrategy",
SqlServerValueGenerationStrategy.IdentityColumn)
},
constraints: table =>
{
table.PrimaryKey("PK_People", x => x.Id);
});