エンティティフレームワークコードの第1のアプローチでは、プライマリキーを非クラスタ化インデックスとして定義し、他のいくつかのフィールドをクラスタ化インデックスとして定義できます。クラスタ化されていないプライマリキーエンティティフレームワークコード最初
おかげ
エンティティフレームワークコードの第1のアプローチでは、プライマリキーを非クラスタ化インデックスとして定義し、他のいくつかのフィールドをクラスタ化インデックスとして定義できます。クラスタ化されていないプライマリキーエンティティフレームワークコード最初
おかげ
EntityTypeConfigurationは、非クラスタ化インデックスとして主キーを設定する手段を提供していませんが、あなたは、テーブルの作成に使用する最初の移行を変更することによって、これを完了することができます。例はhereです。ここで
は、属性を使用してクラスタ化された複数列のインデックスを指定する方法の例です。
[Index("IX_ColumnOneTwo", 1, IsClustered = true)]
public int ColumnOne { get; set;}
[Index("IX_ColumnOneTwo", 2, IsClustered = true)]
public int ColumnTwo { get; set; }
と、この使用モデルビルダーを完了する方法の例:
modelBuilder.Entity<ClassOne>()
.Property(t => t.ColumnOne)
.HasColumnAnnotation(
"Index",
new IndexAnnotation(new IndexAttribute("IX_ColumnOneTwo") { IsClustered = true }));
modelBuilder.Entity<ClassOne>()
.Property(t => t.ColumnTwo)
.HasColumnAnnotation(
"Index",
new IndexAnnotation(new IndexAttribute("IX_ColumnOneTwo") { IsClustered = true }));
ありDbContextでOnModelCreatingをオーバーライドしてEntity Framework Core Code Firstのソリューションを実装します。
p.HasKey(b => b.ColumnId).ForSqlServerIsClustered(false);
このコードは次のような移行を生成します:
table.PrimaryKey("PK_Columns", x => x.ColumnId)
.Annotation("SqlServer:Clustered", false);
EF 6.2がこの問題を解決しました。現在、ベータ状態ですが、動作します。
まず、6.2にあなたのEFをアップグレード:
Install-Package EntityFramework -Version 6.2.0-beta1 -Pre
その後は、OnModelCreating
方法では、主キーにfalse
にIsClusteredを設定します。
modelBuilder.Entity<Receipt>().HasKey(r => r.RecId, config => config.IsClustered(false));
バージョン6.2.0を今、最終的です、もうベータ版ではありません。 この回答は完璧に機能しました。 これを行うために6.1.3から6.2.0に更新しましたが、問題はありませんでした。 +1 – Edu