EF4.1コードファーストを停止する方法エンティティPKの頂点に達したインデックスを作成する

StackOverflow https://stackoverflow.com/questions/5813190

質問

次のSimple Entityクラスで、EF4.1 Code-FirstはPKのクラスターインデックスを作成します UserId データベースをintializingするときの列。

    public class User
    {
        [Key]
        public int UserId { get; set; }
        public int AppId  { get; set; }
        public string UserName { get; set; }
    }

パフォーマンスのために、私の設計目標は生成されたものを維持することです Users テーブルに従って物理的にクラスター化されています AppId PKにはない。

初期イザーのクラスでは、自動生成されたPKクラスターインデックスを手動でドロップし、必要なクラスターインデックスを作成しようとしましたが、自動発電された名前を予測する手がかりはありません。 PK__Users__25518C17 インデックス用!

私はコードファーストワールドに慣れていませんが、デザインの目標に回避策があるかどうかは本当にわかりません。

前もって感謝します

役に立ちましたか?

解決

自動生成インデックスの名前を予測する必要はありません。インデックスの名前を選択するだけです。 SQL Serverの場合、次のようなクエリを使用できます。

SELECT I.Name
FROM sys.indexes AS I
INNER JOIN sys.tables AS T ON
    I.object_Id = T.object_Id
WHERE I.is_primary_key = 1 
    AND T.Name = 'Users'

カスタムイニシャルイザーに名前を取得したら、古いインデックスを変更して新しいインデックスを作成できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top