1. ホーム
  2. entity-framework

[解決済み] Entity Framework 6.2でインデックスを作成する方法とそのコード

2022-08-05 03:55:09

質問

コードファーストでプロパティ/カラムにインデックスを作成する方法はありますか? IndexAttribute ?

どのように解決するのですか?

さて2017.10.26 Entity Framework 6.2が を正式にリリースしました。 . これには 可能性 があり、Fluent API を使って簡単にインデックスを定義することができます。使用するのは、すでに を発表しています。 のベータ版で発表されています。

これで HasIndex() メソッドに続いて IsUnique() が続きます。

ちょっとした比較(before/after)例です。

// before 
modelBuilder.Entity<Person>()
        .Property(e => e.Name)
        .HasColumnAnnotation(
            IndexAnnotation.AnnotationName, 
            new IndexAnnotation(new IndexAttribute { IsUnique = true }));

// after
modelBuilder.Entity<Person>()
    .HasIndex(p => p.Name)
    .IsUnique();

// multi column index
modelBuilder.Entity<Person>()
    .HasIndex(p => new { p.Name, p.Firstname })
    .IsUnique();

また、インデックスをクラスタ化されたものとしてマークするために .IsClustered() .


EDIT #1

多列インデックスの例を追加し、インデックスをクラスタ化する方法を追加しました。


EDIT #2

補足ですが、EF Core 2.1では、現在のEF 6.2と全く同じです。

ここで は、参考のMS Doc文書です。