Entity Framework(EF6以前)でindexを貼ってみました。
Entity FrameworkCore 2.2.6を使っていて、migrationに直接書く方法で作成しました。
下記が手順になります。
Migrationファイルへの記載例
dotnet ef migrations add AddIndex
コマンドでマイグレーションファイルを作成して、下記のようにUpメソッドにCreateIndexメソッドを使ってインデックスを貼るように書きました。
Downメソッドにはマイグレーション実行前に戻す時の処理を書いています(インデックスの削除)
Microsoft.EntityFrameworkCore.Migrations.MigrationBuilderクラスにCreateIndex, DropIndexメソッドが含まれています。
using Microsoft.EntityFrameworkCore.Migrations;
namespace poc_azure_function.Migrations
{
public partial class AddIndex : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateIndex("idx_messages_on_board_id", "messages", "board_id");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex("idx_messages_on_board_id");
}
}
}
CreateIndexの使い方
migrationBuilder.CreateIndex("idx_messages_on_board_id", "messages", "board_id");
引数にインデックス名, テーブル名, インデックスカラムを指定しています。
複合インデックスの場合は、今回のサンプルでは試していませんが、こんな感じで文字列の配列でカラム定義して渡します。
migrationBuilder.CreateIndex("idx_users_on_name_email", "users", new string[] { "name", "email" });
DropIndexの使い方
migrationBuilder.DropIndex("idx_messages_on_board_id");
引数にインデックス名をつけるだけです!
Entity Framework6(EF6)を使う場合(未確認)
Entity Frameworkの6以降では試してないですが、IndexAttributeを使うといいようです。
Code First のデータ注釈 - EF6
Entity Framework 6 での Code First のデータ注釈
動作確認
マイグレーションを実行して、Azure Data Stadioから確認してみました。
dotnet ef database update
OK!
コメント