.net-core – EF Core多个迁移集

我目前正在使用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);
    });
点赞