EF Core多个迁移集

时间:2017-03-15 19:48:59

标签: .net-core entity-framework-core

我目前正在使用EF Core Code First Migrations处理.Net Core应用。我在Windows和OS X之间进行开发(在家中使用Windows,在旅途中使用Mac),并试图弄清楚当我在Windows上时如何使用SQL Server进行数据库迁移SQLite在我的Mac上。

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

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 使用两组迁移
  2. 手动将迁移编辑为与提供程序无关的
  3. 多组

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

    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);
        });