Создание инициализатора контекста из существующей базы данных и файлов .sql

#c# #sql-server #entity-framework-6

#c# #sql-сервер #entity-framework-6

Вопрос:

У меня есть существующая база данных с данными в ней. Существует (много) файлов sql, которые вставляют набор начальных данных.

Проект реорганизуется для подхода «сначала код», поэтому я не хочу перемещать инициализирующие sql-файлы в инициализатор контекста.

Есть ли способ добиться этого с помощью инструмента или скрипта, без необходимости вручную повторно вводить все файлы sql?

Ответ №1:

Вы можете использовать миграцию EF для выполнения такого рода рефакторизации.

И при миграции вы можете выполнять пользовательские сценарии SQL. Вот пример: https://entityframeworkcore.com/knowledge-base/46638380/execute-custom-sql-script-as-part-of-entity-framework-migration

Комментарии:

1. Переносит ли миграция записи тоже или просто вносит структурные изменения? Столбцы не меняются ни в каких таблицах, мне просто нужно переместить начальные данные в инициализатор контекста.

2. Вы можете использовать миграцию без изменения какой-либо структуры базы данных. Вы можете просто использовать migrationBuilder.Sql («Ваш код SQL») для вставки / обновления / удаления данных.