我目前正在使用EF Core Code First Migrations处理.Net Core应用。我在Windows和OS X之间进行开发(在家中使用Windows,在旅途中使用Mac),并试图弄清楚当我在Windows上时如何使用SQL Server进行数据库迁移SQLite在我的Mac上。
是否可以维护两组迁移并选择要应用的设置(无需单独指定每个迁移)?或者我是否需要创建单独的.Net Core应用程序/程序集并为--assembly
命令指定dotnet ef database update
选项?
答案 0 :(得分:2)
您有两种选择:
每个集合都需要在自己的程序集中。首先,生成第一个迁移并将其移动到新项目中。您可以在配置提供程序时配置迁移程序集。
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);
});