Ви вже створили базу даних після першого запуску додатку Code-First, але що це таке після другого запуску? Чи створюється нова база даних щоразу, коли додаток запускається? А як щодо виробничого середовища? Як змінити базу даних при зміні доменної моделі? Для роботи з такими сценаріями потрібно використовувати одну з політик ініціалізації бази даних.
Існує чотири різні стратегії ініціалізації бази даних:
- CreateDatabaseIfNotExists:ЦеЗа промовчаннямпроцедура ініціалізації. Як випливає з назви, вона створить базу даних, якщо вона не існує згідно з конфігурацією. Однак, якщо змінити клас моделі і потім запустити додаток з цим ініціалізатором, виникає виняток.
- DropCreateDatabaseIfModelChanges: Якщо ваш клас моделі (клас сутності) змінився, цей ініціалізатор видаляє існуючу базу даних і створює нову. Тож не потрібно турбуватися про підтримку схем бази даних, коли змінюються класи моделей.
- DropCreateDatabaseЗавжди: Як випливає з назви, цей ініціалайзер видаляє існуючу базу даних щоразу, коли ви запускаєте свій додаток, незалежно від того, чи змінився ваш клас моделі. Це корисно, коли вам потрібна нова база даних щоразу при запуску додатку, наприклад, при розробці додатку.
- Власний ініціалізатор бази даних: Ви також можете створити власний ініціалізатор, якщо він не відповідає вашим вимогам, або якщо ви хочете використати цей ініціалайзер для виконання процесу ініціалізації інших баз даних.
Щоб використати одну з наведених вище стратегій ініціалізації бази даних, потрібно встановити ініціалізатор баз даних, використовуючи клас у класі контексту бази даних, як показано нижче:
Ви також можете створити власний ініціалізатор бази даних, успадкувавши один із ініціалізаторів, як показано нижче:
У наведеному вище прикладі SchoolDBInitializer — це власний клас ініціалізатора, похідний із CreateDatabaseIfNotExists. Це відокремлює код ініціалізації бази даних від класу контексту.
Налаштуйте ініціалізатор бази даних у конфігураційному файлі
Ви також можете встановити ініціалізатор бази даних у файлі конфігурації. Наприклад, щоб встановити початкове значення за замовчуванням в app.config:
Ви можете налаштувати власний ініціалайзер бази даних наступним чином:
Закрити ініціалізатор бази даних
Ви можете вимкнути ініціалізатор бази даних для вашого додатка.Якщо ви не хочете втратити існуючі дані в продакшені, можна закрити ініціалізатор, а саме:
Ви також можете вимкнути ініціалізатор у конфігураційному файлі, наприклад:
|