5

我正嘗試使用EF Code Migrations創建索引。該指數看起來像: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方法創建上述索引,還是必須使用Sql方法在我的遷移中寫出T-SQL?如何正確使用匿名參數?

回答

7

匿名參數旨在提供程序特定。據我所知,他們不被MSSQL提供者使用(如果我錯了,請糾正我)。

對於處理包含列的CreateIndex沒有內置過載。要麼你必須回到手動SQL,要麼你可以在所有列上創建索引。

CreateIndex("Users", 
     new string[] { "RatingId", "CreatedAt", "Id", "Email", "DomainId" }, 
     false, 
     "IX_RatingId_CreatedAt" 
     ); 
相關問題