Убедитесь, что схема целевой базы данных соответствует тому, что есть в Entity Framework? - PullRequest
5 голосов
/ 11 ноября 2011

У нас есть процесс, в котором сценарии нашей базы данных изменяются (и версии их с помощью Джуно) на базу данных нашего приложения вне диапазона с нашей базой кода.Они хороши для учета того, что новые столбцы равны нулю, и не стирают существующие данные, но иногда переименовывает столбец, который не полностью сообщается.Поэтому они внесут некоторые изменения в схему базы данных на тестовом сервере, мы обновим Entity Framework для работы с этими изменениями, а затем передадим наш код.Этот процесс работает нормально, за исключением , когда пришло время развертывания.

У нас настроена TFS для развертывания успешной сборки на соответствующих серверах, но нет гарантии, что база данных для этой средыбыл обновленНам все равно, если дополнительные поля / таблицы / представления / и т. Д.существует в целевой базе данных, но мы хотим изменить сборку, чтобы убедиться, что база данных содержит как минимум все, что знает EF.

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

1 Ответ

1 голос
/ 14 ноября 2011

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

В любом случае вы можете создать некоторую «валидацию» базы данных.но это займет некоторое время.Если вы используете файл EDMX, вы можете открыть его как XML и прочитать его часть SSDL , которая описывает все ожидаемые таблицы, столбцы, отношения, представления (в форме запросов SELECT SQL), хранимые процедуры и функции.Вы можете проанализировать эту XML-часть и использовать системные представления базы данных (sys.tables, sys.columns, ...) для запроса, существуют ли эти объекты в базе данных.

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

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