Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 37510|Ответ: 1

[Источник] Стратегия инициализации базы данных в EF 6 Code-First

[Скопировать ссылку]
Опубликовано 17.04.2019 15:56:46 | | |
Вы уже создали базу данных после первого запуска приложения Code-First, но что это за база данных после второго запуска? Создаётся ли новая база данных каждый раз при запуске приложения? А как насчёт производственной среды? Как изменить базу данных при изменении модели домена? Для работы с такими ситуациями необходимо использовать одну из политик инициализации базы данных.

Существует четыре различных стратегии инициализации базы данных:

  • CreateDatabaseIfNotExists:Этопо умолчаниюпроцедура инициализации. Как следует из названия, она создаст базу данных, если она не существует в соответствии с конфигурацией. Однако если изменить класс модели и затем запустить приложение с этим инициализатором, возникает исключение.
  • DropCreateDatabaseIfModelChanges: Если ваш класс модели (класс сущности) изменился, этот инициализатор удалит существующую базу данных и создаст новую. Так что вам не нужно беспокоиться о поддержании схем базы данных при изменении классов моделей.
  • DropCreateDatabaseAlways: Как следует из названия, этот инициализатор удаляет существующую базу данных каждый раз при запуске приложения, независимо от того, изменился ли класс модели или нет. Это полезно, когда вам нужна новая база данных каждый раз при запуске приложения, например, при разработке приложения.
  • Пользовательский инициализатор базы данных: Вы также можете создать собственный собственный инициализатор, если он не соответствует вашим требованиям, или если вы хотите использовать вышеуказанный инициализатор для инициализации других баз данных.

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




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




В приведённом выше примере SchoolDBInitializer — это пользовательский класс инициализатора, полученный из CreateDatabaseIfNotExists. Это отделяет код инициализации базы данных от класса контекста.

Настройте инициализатор базы данных в конфигурационном файле

Вы также можете установить инициализатор базы данных в конфигурационном файле. Например, чтобы задать стандартную начальную настройку значения в app.config:




Вы можете настроить пользовательский инициализатор базы данных следующим образом:




Закрыть инициализатор базы данных

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



Вы также можете отключить инициализатор в конфигурационном файле, например:








Предыдущий:Иллюстрированная криптография, 3-е издание
Следующий:Видео по занятости в Кремниевой долине в апреле 2018 года
 Хозяин| Опубликовано 07.02.2021 15:08:59 |
Разрешите Entity Framework запускаться недействительным __MigrationHistory таблице
https://www.itsvse.com/thread-3255-1-1.html

Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com