Entity Framework 7 IDシード

c# entity-framework entity-framework-core

質問

私たちはEF7でコードファーストを使用しています。アイデンティティシードが1以外の別の値から始まる列を追加したいと思います。

現在、次の方法を使用して、移行中にEntityTypeBuilderを使用して自動インクリメントに設定できます。

entityBuilder.Property(e => e.PropertyName).ValueGeneratedOnAdd();

しかし、私はアイデンティティシードを変更する方法を見つけることができません。他のバージョンのEFと同じように更新する必要がありますか?たとえば、いくつかのカスタムSQLを書いて、これをマイグレーション中に実行しますか?

いくつかのテーブルのエンティティフレームワークコードでIDシード値を最初にシードする方法

Entity Framework 4のコードを最初にSQL Compact 4で使用してID列にIDシードを設定するにはどうすればよいですか?

EF7では、 SqlServerMigrationSqlGenerator > override Generate(AltherTableOperation alterTableOperation)コードがないようですか?

受け入れられた回答

Entity FrameworkのコアでUpメソッドのSqlコマンドを使用する:

重要な部分: migrationBuilder.Sql("DBCC CHECKIDENT ('Payment', RESEED, 1000000)");

using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using System;

namespace PaymentService.Migrations
{
    public partial class Initial : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
            name: "Payment",
            columns: table => new
            {
                Id = table.Column<int>(nullable: false)
                          .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Payment", x => x.Id);
            });

            // Below code is for seeding the identity
            migrationBuilder.Sql("DBCC CHECKIDENT ('Payment', RESEED, 1000000)");
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(name: "Payment");
        }
    }
}

人気のある回答

はい、シードを設定するために必要なSQL文を記述してから、移行でSqlメソッドを使用する必要があります。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ