Система создана в .NET Core с Entity Framework и SQL Server. Сейчас он довольно большой и продолжает расти. В конвейере непрерывной доставки существует множество сред, например,
test1 -> test2 -> test3 -> test4 -> preprod -> prod
Каждая среда может иметь разные конфигурации, например, он может быть размещен в Azure, локально или во внешнем частном облаке.
Необходимо заполнить базу данных образцами данных для каждой из этих сред, но в каждой среде очень часто требуется свой набор данных.
Я вижу два подхода:
Написание сценариев SQL.
Преимущество заключается в том, что сценарии SQL можно очень легко запускать из SSMS или другого окна консоли. Недостаток, который я вижу, заключается в том, что поддерживать систему при росте системы может быть ужасно.
Я думаю о поиске отношений и управления идентификаторами.
Создание классов сеялки в C #, которые можно запускать через EF Core.
Это решение позволяет мне создавать классы, которые можно легко обслуживать, и теоретически я могу создать переключатель функций, который сообщает, какой класс сеялки должен быть запущен для данной среды.
Если схема БД меняется очень часто, потребуется обновить все сценарии заполнения SQL. Сценарий может стать недействительным, что не может быть обнаружено автоматически, как в случае использования механизма заполнения ядра EF.
Я говорил с одним разработчиком, который сказал мне, что немного страшно автоматически запускать такой класс сеялки каждый раз, когда я делаю релиз в конвейере CD, и классы Seeder для тестовых сред не должны добавляться в репозиторий кода. .
Вопрос в том, каков правильный подход, и могу ли я использовать Entity Framework для описанной проблемы? Приветствия