Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Используйте 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());

Ответ 2

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