5

EF Code Migrations を使用してインデックスを作成しようとしています。インデックスは次のようになります。

CREATE INDEX [IX_RatingId_CreatedAt] ON [Users] 
(
[RatingId] ASC,
[CreatedAt] ASC
)
INCLUDE (Id, Email, DomainId)

私がこれまでに持っているコードは次のとおりです。

CreateIndex("Users",
             new string[] { "RatingId", "CreatedAt" },
             false,
             "IX_RatingId_CreatedAt"
           );

これにより、インデックスが作成されますが、列は含まれません。CreateIndex メソッドには、anonymousArguments と呼ばれるものを受け取るオーバーライドがあります。私はそれについて多くの情報を見つけることができないので、次のようなことを試しました:

CreateIndex("Users",
             new string[] { "RatingId", "CreatedAt" },
             false,
             "IX_RatingId_CreatedAt",
             new { INCLUDE = "(Id, Email, DomainId)" });

例外はありませんでしたが、うまくいきませんでした。

CreateIndex メソッドを使用して上記のインデックスを作成することは可能ですか、それとも Sql メソッドを使用して移行で T-SQL を書き出す必要がありますか? 匿名引数を正しく使用するにはどうすればよいですか?

4

1 に答える 1

8

匿名の引数は、プロバイダー固有のものです。私が知る限り、これらはMSSQLプロバイダーによって使用されていません(間違っている場合は修正してください)。

インクルードされた列を処理するCreateIndexの組み込みのオーバーロードはありません。手動SQLにフォールバックするか、すべての列にインデックスを作成する必要があります。

CreateIndex("Users",
         new string[] { "RatingId", "CreatedAt", "Id", "Email", "DomainId" },
         false,
         "IX_RatingId_CreatedAt"
       );
于 2012-05-13T11:06:53.880 に答える