Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 37510|Отговор: 1

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

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

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

  • СъздавайБаза данниIfNotExists:Това еПо подразбиранепроцедура за инициализация. Както подсказва името, тя ще създаде база данни, ако тя не съществува според конфигурацията. Въпреки това, ако промените класа на модела и след това стартирате приложението с този инициализатор, се появява изключение.
  • DropCreateDatabaseIfModelChanges: Ако вашият клас модел (клас на обекти) се е променил, този инициализатор ще изтрие съществуващата база данни и ще създаде нова. Така че не трябва да се притесняваш за поддържане на схеми на бази данни, когато се променят класовете на модела.
  • DropCreateDatabaseAlways: Както подсказва името, този инициализатор изтрива съществуващата база данни всеки път, когато стартирате приложението, независимо дали класът на модела ви се е променил или не. Това е полезно, когато ви трябва нова база данни всеки път, когато стартирате приложение, например при разработка на приложение.
  • Персонализиран инициализатор на база данни: Можете също да създадете собствен персонализиран инициализатор, ако горният не отговаря на вашите изисквания, или ако искате да използвате горния инициализатор, за да извършите процеса на инициализация на други бази данни.

За да използвате една от горните стратегии за инициализация на бази данни, трябва да зададете DB Initializer, използвайки класа в контекстния клас на база данни, както е показано по-долу:




Можете също да създадете персонализиран инициализатор на база данни, като наследите един от инициализаторите, както е показано по-долу:




В горния пример SchoolDBInitializer е персонализиран клас за инициализатори, извлечен от CreateDatabaseIfNotExists. Това отделя кода за инициализация на базата данни от контекстния клас.

Настройте DB Initializer в конфигурационния файл

Можеш също да зададеш инициализатора на база данни в конфигурационния файл. Например, за да зададете стандартната начална стойност в app.config:




Можете да настроите персонализиран инициализатор на база данни по следния начин:




Затваряне на инициализатора на базата данни

Можете да изключите инициализатора на базата данни за вашето приложение.Ако не искате да загубите съществуващи данни в продукцията, можете да затворите инициализатора, както следва:



Можете също да изключите инициализатора в конфигурационния файл, например:








Предишен:Илюстрирана криптография, 3-то издание
Следващ:Видео за курс по заетост в Силициевата долина през април 2018 г.
 Хазяин| Публикувано в 7.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