Я не рекомендую вам размещать базу данных в Миграции вверх или вниз. это плохая практика.
Вы можете выполнить заявление Sql в вашем вверх/вниз методе и семена таблицы следующим образом:
Ef6:
public override void Up()
{
Sql("INSERT INTO Customers (CustomerName, ContactName) VALUES ('Cardinal','Tom B.')");
...
}
EF Ядро 1,0/7:
protected override void Up(MigrationBuilder db)
{
db.Sql("INSERT INTO Customers (CustomerName, ContactName) VALUES ('Cardinal','Tom B.')");
}
где Клиент является юридическим лицом DbSet < «Клиент»> Клиентами от вашего DbContext
Вы можете создать вам DbContext во время миграции на питающих строку соединения или загрузить его из confiugration но думать хорошо о том, что база данных в данный момент времени не завершен, и прогресс обновления все еще в использовании. эта вещь может сделать для вас по-настоящему большие проблемы.
1) Используйте обычный DBInitializer.Seed, чтобы засеять данные в базу данных.
2) Используйте инструкции Sql в ваших миграциях вверх/вниз для преобразования (обновления/удаления/вставки) данных и обеспечения совместимости данных между старой схемой базы данных и новой в ходе миграции.
3) Не пытайтесь создать DbContext wthing процесс миграции.
Это означает, что каждый раз, когда мы запускаем приложение, даже если никаких миграций не будет выполнено, мы создадим фиктивный «select from», чтобы увидеть, нужно ли добавлять данные. Я могу представить, что с простыми данными, но не с чем-то более сложным или с данными, которые пользователь может позже, например. delete ... – MadDeveloper
Ну, это будет работать, когда приложение будет запущено да, в качестве начальной стоимости, которая не влияет на пользователей, посещающих ваши сайты. И все равно вы не будете запускать это на производственных серверах. Наличие автоматизированного процесса для обеспечения данных семян (вне задачи развертывания) довольно необычно. – poke
У меня есть приложение WPF. – MadDeveloper