Как использовать Entity Framework в режиме Code First Drop-Create?

Я использую Entity Framework v4. Я следовал инструкциям из учебника Nerd Dinner. В настоящее время я нахожусь в режиме разработки (не выпущен для более высоких сред) и хотел бы, чтобы таблицы создавались заново при каждом новом развертывании, поскольку модели все еще очень изменчивы, и я не хочу сохранять данные. Однако этого не происходит. Таблицы не создаются / не изменяются, или что-то происходит с БД. Если я перехожу к модели миграции с помощью команд диспетчера пакетов: enable-migrations, add-migration (начальная), это работает и использует мои миграции. Однако, поскольку я пока не хочу выполнять детальные миграции и хочу только мой начальный сценарий создания, я вынужден удалить папку миграций, повторить команды (enable-migrations, add -igration) и удалить базу данных вручную каждый раз Я ничего не меняю.

Как мне получить поведение при сбросе / создании кода в первую очередь?

2 ответа

Решение

Используйте инициализатор DropCreateDatabaseAlways для вашей базы данных. Он всегда будет воссоздавать базу данных при первом использовании контекста в домене приложения:

Database.SetInitializer(new DropCreateDatabaseAlways<YourContextName>());

На самом деле, если вы хотите заполнить базу данных, создайте свой собственный инициализатор, который будет унаследован от DropCreateDatabaseAlways:

public class MyInitializer : DropCreateDatabaseAlways<YourContextName>
{
     protected override void Seed(MagnateContext context)
     {
         // seed database here
     }
}

И установите его перед первым использованием контекста

Database.SetInitializer(new MyInitializer());

Если база данных уже существует, и вы хотите внести изменения в вашу модель, вы используете DropCreateDatabaseIfModelChanges<YourContextName>

Другие вопросы по тегам