Как изменение схемы базы данных применяется в рамках сущности с использованием кода сначала без миграций

Я не хочу использовать миграцию в данный момент, но сначала пишу код.

Когда я использую модельостроителя и Fluent API для создания новой таблицы со свойствами базы данных.

Как мне сказать "применить изменения сейчас". Изменения выполняются, когда первый запрос попадает в базу данных? Или есть какой-то другой лучший подход?

1 ответ

Решение

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

MigrateDatabaseToLatestVersion инициализатор является наиболее гибким из ваших вариантов, предлагая вам возможность постепенного добавления к вашей модели. Этот процесс "миграции" также иногда называют "движением данных".

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

Еще один популярный инициализатор DropCreateDatabaseIfModelChanges, Это реализация IDatabaseInitializer это удалит, воссоздает и при необходимости повторно заполняет базу данных, только если модель изменилась с момента ее создания.

Наконец, у вас есть DropCreateDatabaseAlways, Как вы можете ожидать, это реализация IDatabaseInitializer это всегда будет воссоздавать и при необходимости заново заполнять базу данных при первом использовании контекста в домене приложения.

Другие вопросы по тегам