EF核心多重迁移集

wil*_*m18 5 entity-framework-core .net-core

我目前正在使用EF Core Code First Migrations开发.Net Core应用程序。我在Windows和OS X之间切换以进行开发(在家中使用Windows,在旅途中使用Mac),并且试图弄清楚如何在Windows上使用SQLite和在SQLite上使用SQLite进行数据库迁移。苹果电脑。

是否可以维护两组迁移并选择要应用的迁移集(而无需单独指定每个迁移)?还是我需要创建单独的.Net Core应用程序/程序集并--assemblydotnet ef database update命令指定选项?

bri*_*lam 5

您有两个选择:

  1. 使用两组迁移
  2. 手动编辑迁移以与提供商无关

多套

每组都需要有自己的组件。首先,生成第一个迁移并将其移至新项目中。您可以在配置提供程序时配置迁移程序集。

optionsBuilder.UseSqlServer(
    mssqlConnectionString
    , x => x.MigrationsAssembly("MyApp.Migrations.SqlServer"));
//optionsBuilder.UseSqlite(
//    sqliteConnectionString,
//    x => x.MigrationsAssembly("MyApp.Migrations.Sqlite"));
Run Code Online (Sandbox Code Playgroud)

我有一个示例,它将迁移放入自己的程序集中,您可能也想将其用作参考。

与提供商无关

为了使迁移与提供商无关,请合并每个提供商将生成的内容。例如,以下内容同时包含 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);
    });
Run Code Online (Sandbox Code Playgroud)