EF CodeFirst — создание индекса после создания базы данных

Я переношу свой проект с базы данных на код.

Entity Framework неплохо поработал, создав мою новую базу данных (которая должна имитировать старую).
Я использую комбинацию аннотаций данных и API Fluent для описания своих таблиц.

В моей базе данных есть несколько индексов, и я хотел бы, чтобы Entity Framework также их создал. Кажется, старый способ сделать это - определить свой собственный Initializer и использовать собственный T-SQL.

Но теперь, когда у нас есть миграция EF, сделать это должно быть проще.
Я не могу понять, как объединить CreateDatabaseIfNotExists‹> с автоматической миграцией для создания индексов. Я пытался использовать MigrateDatabaseToLatestVersion‹,> но, похоже, он не выполняет миграцию после создания базы данных.

Как правильно создавать индексы и ограничения на создание базы данных теперь, когда у нас есть Entity Framework 4.3?


person Zyphrax    schedule 21.04.2012    source источник
comment
Вы говорите, что после создания базы данных и CreateDatabaseIfNotExists это означает, что вы хотите сделать это в существующей базе данных?   -  person dknaack    schedule 21.04.2012
comment
Нет, извините, я имею в виду после того, как Entity Framework создала мою базу данных. Итак, я начинаю без базы данных, затем я хочу, чтобы EF создал мою базовую структуру, а после этого мне нужны индексы.   -  person Zyphrax    schedule 21.04.2012
comment
Я не знаю, что ef создаст для вас индексы; просто предоставляет способ выдавать команды, чтобы сделать это самостоятельно.   -  person Andrew Barber    schedule 21.04.2012
comment
В EF Migrations есть помощники, такие как CreateIndex.   -  person Zyphrax    schedule 21.04.2012


Ответы (1)


Не используйте CreateDatabaseIfNotExists, если вы хотите использовать миграции. Используйте MigrateDatabaseToLatestVersion с самого начала - это также создаст вашу базу данных. Поместите код создания индекса (вызовы CreateIndex) в метод Up вашего класса миграции.

Если у вас уже есть существующая база данных и вы хотите использовать миграции, вы должны сначала создать начальную миграцию.

person Ladislav Mrnka    schedule 21.04.2012