Является ли NHibernate SchemaUpdate безопасным в производственном коде?

Для простоты. Я использую Fluent NHibernate Automapping в сочетании с NHibernate SchemaUpdate во время выполнения. При каждом запуске Automapper создает сопоставления для всех классов сущностей, а SchemaUpdate применяет схему к существующей базе данных. Я был приятно удивлен, что он корректно работает и с пустой базой данных. До сих пор он работал хорошо в среде разработки и позволял мне быстро реагировать на ошибки.

Мой вопрос заключается в том, достаточно ли он достаточно надежен оставить в производственном коде. Очевидно, что это не нужно запускать каждый раз, когда программа запускается в производственной среде, но это было бы полезно для дополнительных обновлений продукта (хотя я не планирую делать какие-либо серьезные изменения в домене после того, как товар отправляется).

(Возможно, мой реальный вопрос должен состоять в том, насколько безопасно использовать эти два инструмента вместе?)

Обновление

Приложение имеет две версии: автономный рабочий стол и многопользовательский клиент/сервер. Также из-за характера бизнес-домена (налогового программного обеспечения) у меня есть роскошь начинать с чистой базы данных каждый год.

Ответы

Ответ 1

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

Это само по себе должно отвлечь вас от этого подхода, независимо от качества/надежности кода NHibernate.

Ответ 2

Я бы не рискнул. Хорошо работает, чтобы запустить его на промежуточном сервере, который был восстановлен с производства, а затем использовать инструмент сравнения баз данных (например, Red Gate) для изучения изменений и создания script.

Ответ 3

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

Иными словами, абсолютно не для использования в производстве.

Ответ 4

Это зависит от того, насколько важны данные! Я сомневаюсь, что такая хорошая идея для банковской системы. У меня не было никаких проблем с обновлением, кроме одной вещи. Иногда он не переименовывается должным образом. Кроме того, это риск безопасности, связанный с учетной записью, которая может изменить схему следующим образом:)