Как использовать 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>