EF Core多個遷移集

.net-core entity-framework-core

我目前正在使用EF Core Code First Migrations開發.Net Core應用程序。我正在Windows和OS X之間進行開發(在家中使用Windows,在旅途中使用Mac),我正在嘗試弄清楚當我在Windows和SQLite上時,如何使用SQL Server的數據庫遷移蘋果電腦。

是否可以維護兩組遷移並選擇要應用的集合(無需單獨指定每個遷移)?或者我是否需要創建單獨的.Net Core應用程序/程序集並為dotnet ef database update命令指定--assembly選項?

一般承認的答案

你有兩個選擇:

  1. 使用兩組遷移
  2. 手動編輯遷移以使其與提供程序無關

多套

每個集合都需要在自己的程序集中。首先,生成第一個遷移並將其移動到新項目中。您可以在配置提供程序時配置遷移程序集。

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

我有一個示例將遷移放在他們自己的程序集中,您可能還希望將其用作引用。

供應商無關

要使遷移提供程序無關,請合併每個提供程序將生成的內容。例如,以下內容包含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);
    });


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow