5

EFコードの移行を使用してインデックスを作成しようとしています。インデックスは次のようになります。EF 4.3 CreateIndexと匿名引数を使用したコードの移行

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メソッドを使用して上記のインデックスを作成することはできますか、または移行でT-SQLを書き出すにはSqlメソッドを使用する必要がありますか?匿名の引数を正しく使うには?

答えて

7

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

インクルードされた列を処理するCreateIndexのオーバーロードは組み込まれていません。手動SQLにフォールバックするか、すべての列に索引を作成することができます。

CreateIndex("Users", 
     new string[] { "RatingId", "CreatedAt", "Id", "Email", "DomainId" }, 
     false, 
     "IX_RatingId_CreatedAt" 
     ); 
関連する問題