Вече сте създали база данни след първото стартиране на приложението Code-First, но какво е тя след втория старт? Създава ли се нова база данни всеки път, когато приложението се стартира? А какво да кажем за продукционната среда? Как да променя базата данни, когато променя модела на домейна? За да се справите с тези ситуации, трябва да използвате една от политиките за инициализация на база данни.
Съществуват четири различни стратегии за инициализация на база данни:
- СъздавайБаза данниIfNotExists:Това еПо подразбиранепроцедура за инициализация. Както подсказва името, тя ще създаде база данни, ако тя не съществува според конфигурацията. Въпреки това, ако промените класа на модела и след това стартирате приложението с този инициализатор, се появява изключение.
- DropCreateDatabaseIfModelChanges: Ако вашият клас модел (клас на обекти) се е променил, този инициализатор ще изтрие съществуващата база данни и ще създаде нова. Така че не трябва да се притесняваш за поддържане на схеми на бази данни, когато се променят класовете на модела.
- DropCreateDatabaseAlways: Както подсказва името, този инициализатор изтрива съществуващата база данни всеки път, когато стартирате приложението, независимо дали класът на модела ви се е променил или не. Това е полезно, когато ви трябва нова база данни всеки път, когато стартирате приложение, например при разработка на приложение.
- Персонализиран инициализатор на база данни: Можете също да създадете собствен персонализиран инициализатор, ако горният не отговаря на вашите изисквания, или ако искате да използвате горния инициализатор, за да извършите процеса на инициализация на други бази данни.
За да използвате една от горните стратегии за инициализация на бази данни, трябва да зададете DB Initializer, използвайки класа в контекстния клас на база данни, както е показано по-долу:
Можете също да създадете персонализиран инициализатор на база данни, като наследите един от инициализаторите, както е показано по-долу:
В горния пример SchoolDBInitializer е персонализиран клас за инициализатори, извлечен от CreateDatabaseIfNotExists. Това отделя кода за инициализация на базата данни от контекстния клас.
Настройте DB Initializer в конфигурационния файл
Можеш също да зададеш инициализатора на база данни в конфигурационния файл. Например, за да зададете стандартната начална стойност в app.config:
Можете да настроите персонализиран инициализатор на база данни по следния начин:
Затваряне на инициализатора на базата данни
Можете да изключите инициализатора на базата данни за вашето приложение.Ако не искате да загубите съществуващи данни в продукцията, можете да затворите инициализатора, както следва:
Можете също да изключите инициализатора в конфигурационния файл, например:
|