Entity Framework Core: проверка работоспособности, синхронизируются ли база данных и модель - PullRequest
4 голосов
/ 27 мая 2020

В настоящее время мы находимся в настройке, в которой несколько систем используют одну огромную базу данных. В нашей новейшей системе мы используем Entity Framework Core с подходом «сначала код». К сожалению, некоторые изменения базы данных, сделанные другими системами, не обновляются в системе с первым кодом. Поскольку у нас нет полного покрытия интеграционными тестами, эти изменения иногда go не уведомляются, пока кто-то случайно не использует измененный объект.

Мы не можем просто быстро изменить настройку; поэтому мы хотели бы иметь некоторые автоматические проверки работоспособности, синхронизируются ли база данных и модели. В поисках такого решения я нашел этот прекрасный фрагмент кода: Существует ли эквивалент Database.CompatibleWithModel (bool) в EF Core

Но явно указано, что этот код не должен использоваться (и это все равно больше не работает). Я нашел здесь еще несколько идей от Брайса: Убедитесь, что снимок модели EF Core, миграции и фактическая схема базы данных согласованы друг с другом . Но эти подходы в основном ручные, соответственно, их нелегко использовать напрямую из кода.

Существует ли уже решение, которое позволяет напрямую проверить синхронизацию между отображением и фактической базой данных из C#? Проверяя интерфейс Entity Framework Core, я думаю, у нас была бы вся необходимая информация, но программирование этой проверки в общем c стиле кажется огромной задачей?

1 Ответ

1 голос
/ 31 мая 2020

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

Вы можете рассмотреть возможность создания отчета об изменении схемы, который можно будет отправлять вашей команде по электронной почте каждый раз, когда происходит изменение:

Отправить оповещение по электронной почте об изменении схемы базы данных в SQL

...