Вы уже создали базу данных после первого запуска приложения Code-First, но что это за база данных после второго запуска? Создаётся ли новая база данных каждый раз при запуске приложения? А как насчёт производственной среды? Как изменить базу данных при изменении модели домена? Для работы с такими ситуациями необходимо использовать одну из политик инициализации базы данных.
Существует четыре различных стратегии инициализации базы данных:
- CreateDatabaseIfNotExists:Этопо умолчаниюпроцедура инициализации. Как следует из названия, она создаст базу данных, если она не существует в соответствии с конфигурацией. Однако если изменить класс модели и затем запустить приложение с этим инициализатором, возникает исключение.
- DropCreateDatabaseIfModelChanges: Если ваш класс модели (класс сущности) изменился, этот инициализатор удалит существующую базу данных и создаст новую. Так что вам не нужно беспокоиться о поддержании схем базы данных при изменении классов моделей.
- DropCreateDatabaseAlways: Как следует из названия, этот инициализатор удаляет существующую базу данных каждый раз при запуске приложения, независимо от того, изменился ли класс модели или нет. Это полезно, когда вам нужна новая база данных каждый раз при запуске приложения, например, при разработке приложения.
- Пользовательский инициализатор базы данных: Вы также можете создать собственный собственный инициализатор, если он не соответствует вашим требованиям, или если вы хотите использовать вышеуказанный инициализатор для инициализации других баз данных.
Чтобы использовать одну из вышеуказанных стратегий инициализации базы данных, необходимо настроить инициализатор базы данных с использованием класса в классе контекста базы данных, как показано ниже:
Вы также можете создать собственный инициализатор базы данных, унаследовав один из инициализаторов, как показано ниже:
В приведённом выше примере SchoolDBInitializer — это пользовательский класс инициализатора, полученный из CreateDatabaseIfNotExists. Это отделяет код инициализации базы данных от класса контекста.
Настройте инициализатор базы данных в конфигурационном файле
Вы также можете установить инициализатор базы данных в конфигурационном файле. Например, чтобы задать стандартную начальную настройку значения в app.config:
Вы можете настроить пользовательский инициализатор базы данных следующим образом:
Закрыть инициализатор базы данных
Вы можете отключить инициализатор базы данных для вашего приложения.Если вы не хотите терять существующие данные в продакшене, можно закрыть инициализатор, следующим образом:
Вы также можете отключить инициализатор в конфигурационном файле, например:
|