Entity Frameworkコアで列のインデックスを変更する

entity-framework entity-framework-core

質問

バージョン

SQLエンジニア:MS SQL。

EFコアパッケージのバージョン:

"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"

問題

インデックスを作成していた既存の列を変更しました。以前はほとんど移行が作成されていませんでした。

// ... other changes
migrationBuilder.CreateIndex(
    name: "IX_Interactions_OrganisationToId",
    table: "Interactions",
    column: "OrganisationToId");

私はオプションから必須(nullableではない)に変更しました。エンティティフレームワークコアがこのような移行を生成しました:

// ... other changes
migrationBuilder.AlterColumn<Guid>(
    name: "OrganisationToId",
    table: "Interactions",
    nullable: false);

しかし、インデックスを持つ列を変更することはできません。残念ながら、EFコアは、フィールドをnull値に変更できない場合にこれをサポートしていません。

フィールドの名前を変更すると、魅力のように動作し、名前を変更する前に単にインデックスを削除し、変更後に復元します。


質問

彼はこのケースをカバーし、正しい移行を生成するためにEF Coreを設定する方法はありますか?

受け入れられた回答

現時点では、移行を変更し、列を変更する前にインデックスを削除し、操作後に手動で復元しました。

それは仕事をした。

// drop index before altering column
migrationBuilder.DropIndex(name: "IX_Interactions_OrganisationToId", table: "Interactions");

// actually altering column
migrationBuilder.AlterColumn<Guid>(
   name: "OrganisationToId",
   table: "Interactions",
   nullable: false);

// restore index
migrationBuilder.CreateIndex(
   name: "IX_Interactions_OrganisationToId",
   table: "Interactions",
   column: "OrganisationToId");


Related

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