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 메서드를 사용하여 위의 인덱스를 만들 수 있습니까? 아니면 Sql 메서드를 사용하여 마이 그 레이션에서 T-SQL을 작성해야합니까? 익명 인수를 올바르게 사용하려면 어떻게해야합니까?

답변

7

익명 인수는 공급자별로 제공됩니다. 내가 아는 한, 그들은 MSSQL 공급자에 의해 사용되지 않습니다 (제발 내가 틀렸다면 수정하십시오).

포함 된 열을 처리하는 CreateIndex에 대한 오버로드가 없습니다. 수동 SQL로 되돌려 야하거나 모든 컬럼에 대해 색인을 작성할 수 있습니다.

CreateIndex("Users", 
     new string[] { "RatingId", "CreatedAt", "Id", "Email", "DomainId" }, 
     false, 
     "IX_RatingId_CreatedAt" 
     ); 
관련 문제