EF CodeFirstクラスター化されていないプライマリキーインデックスを作成します
-
25-10-2019 - |
質問
EF 4.1 CodeFirstを使用してDBを作成しています。 EFは、クラスター化されたインデックスを備えたすべての主要なキーを作成しているようですが、これは1つのケースでは最適ではありません(おそらくその他の場合)。非クラスター化されたインデックスとしてプライマリキーを使用してこのテーブルを生成するようにEFに伝える方法はありますか?
もちろん、データベースが既に作成された後にカスタムスクリプトを手動で使用することもできますが、このテーブルを指し示す外部キーがたくさんあります。 DB作成中にすでに同じです。どんな助けも感謝しています
解決
いいえ、SQLコードを最初に生成する方法はありません - それは最初にコードであり、その現在の哲学(実際には悪いもの)は次のとおりです。データベースについては何も知らず、気にしません。
この動作を変更する唯一の方法は、カスタムデータベースの初期化を記述し、カスタムデータベースクエリを使用して作成されたインデックスを検索し、そのインデックスを削除して新しいものを作成することです。いくつかの参照:
イニシライザーは、コンクリートデータベースサーバー製品に依存するソリューションを提供します。
他のヒント
はい、クラスター化されたインデックスを作成しないように指定できる方法があります。コード移行を使用する場合、データベースを入力するために *.csファイルが生成されます。このファイルでは、クラスタリングされたインデックスで作成する必要がある場合は、各テーブルのプライマリキーとは別に指定できます。
.PrimaryKey(t => t.MID, null, true)
所属していません StackOverflow