Entity Framework Coreでクラスター化・非クラスター化インデックスを設定する方法

こんにちは、あおいです。
NASDAQちゃん、最近メンヘラ気味ですね。今は病み期ピークって感じですね。
さて、現在はドメイン駆動開発の手法でEntity Framework Coreを使ってインフラ層の実装をしています。テーブル定義でインデックスを設定する際に、FluentAPIを使ってクラスター化・非クラスタ-化インデックスを設定しようとしたんですが、若干詰まってしまったことがありました。
そこで、今回はEntity Framework Coreでクラスター化・非クラスター化インデックスを設定する方法を備忘録として記事に残します。
以下のUserクラスを例として、クラスター化・非クラスター化インデックスを設定していきます。
public class User
{
public int UserId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
クラスター化インデックスの場合、FluentAPIで以下のように設定します。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>(entity =>
{
// クラスター化インデックスの設定
entity.HasKey(user => user.UserId)
.IsClustered(true)
.HasName("PK_Users");
});
}
非クラスター化インデックスの場合、FluentAPIで以下のように設定します。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>(entity =>
{
// 非クラスター化インデックスの設定
entity.HasIndex(user => new { user.LastName, user.FirstName }) ※複合インデックスキーの場合
.IsClustered(false)
.HasDatabaseName("IDX_Users_LastName_FirstName");
});
}
書き方が微妙に違うの厄介ですね、、、






![Microsoft Power BI [実践] 入門 ―― BI初心者でもすぐできる! リアルタイム分析・可視化の手引きとリファレンス](/assets/img/banner-power-bi.c9bd875.png)
![Microsoft Power Apps ローコード開発[実践]入門――ノンプログラマーにやさしいアプリ開発の手引きとリファレンス](/assets/img/banner-powerplatform-2.213ebee.png)
![Microsoft PowerPlatformローコード開発[活用]入門 ――現場で使える業務アプリのレシピ集](/assets/img/banner-powerplatform-1.a01c0c2.png)


