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" 
     ); 

 Смежные вопросы

  • Нет связанных вопросов^_^