Как правильно заполнить базу данных большой системы образцами данных при использовании .NET Core с EF? - PullRequest
0 голосов
/ 06 января 2019

Система создана в .NET Core с Entity Framework и SQL Server. Сейчас он довольно большой и продолжает расти. В конвейере непрерывной доставки существует множество сред, например,

test1 -> test2 -> test3 -> test4 -> preprod -> prod

Каждая среда может иметь разные конфигурации, например, он может быть размещен в Azure, локально или во внешнем частном облаке.

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

Я вижу два подхода:

  1. Написание сценариев SQL.

    Преимущество заключается в том, что сценарии SQL можно очень легко запускать из SSMS или другого окна консоли. Недостаток, который я вижу, заключается в том, что поддерживать систему при росте системы может быть ужасно.

    Я думаю о поиске отношений и управления идентификаторами.

  2. Создание классов сеялки в C #, которые можно запускать через EF Core.

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

    Если схема БД меняется очень часто, потребуется обновить все сценарии заполнения SQL. Сценарий может стать недействительным, что не может быть обнаружено автоматически, как в случае использования механизма заполнения ядра EF.

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

Вопрос в том, каков правильный подход, и могу ли я использовать Entity Framework для описанной проблемы? Приветствия

1 Ответ

0 голосов
/ 06 января 2019

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

https://www.apexsql.com/sql-tools-generate.aspx

https://www.red -gate.com / продукты / SQL-разработка / SQL-данных генератор /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...