Является ли NHibernate SchemaUpdate безопасным в производственном коде?
Для простоты. Я использую Fluent NHibernate Automapping в сочетании с NHibernate SchemaUpdate во время выполнения. При каждом запуске Automapper создает сопоставления для всех классов сущностей, а SchemaUpdate применяет схему к существующей базе данных. Я был приятно удивлен, что он корректно работает и с пустой базой данных. До сих пор он работал хорошо в среде разработки и позволял мне быстро реагировать на ошибки.
Мой вопрос заключается в том, достаточно ли он достаточно надежен оставить в производственном коде. Очевидно, что это не нужно запускать каждый раз, когда программа запускается в производственной среде, но это было бы полезно для дополнительных обновлений продукта (хотя я не планирую делать какие-либо серьезные изменения в домене после того, как товар отправляется).
(Возможно, мой реальный вопрос должен состоять в том, насколько безопасно использовать эти два инструмента вместе?)
Обновление
Приложение имеет две версии: автономный рабочий стол и многопользовательский клиент/сервер. Также из-за характера бизнес-домена (налогового программного обеспечения) у меня есть роскошь начинать с чистой базы данных каждый год.
Ответы
Ответ 1
Для этого, чтобы иметь возможность запускать производственный код, учетная запись, которую производственное приложение использует для подключения к вашей базе данных, должна иметь разрешение на изменение схемы базы данных.
Это само по себе должно отвлечь вас от этого подхода, независимо от качества/надежности кода NHibernate.
Ответ 2
Я бы не рискнул. Хорошо работает, чтобы запустить его на промежуточном сервере, который был восстановлен с производства, а затем использовать инструмент сравнения баз данных (например, Red Gate) для изучения изменений и создания script.
Ответ 3
Вы можете подумать, что SchemaUpdate всегда будет делать аддитивные и неразрушающие изменения, в результате чего будут устаревать столбцы и столбцы с нулевым значением, где они должны быть недействительными.
Иными словами, абсолютно не для использования в производстве.
Ответ 4
Это зависит от того, насколько важны данные! Я сомневаюсь, что такая хорошая идея для банковской системы. У меня не было никаких проблем с обновлением, кроме одной вещи. Иногда он не переименовывается должным образом. Кроме того, это риск безопасности, связанный с учетной записью, которая может изменить схему следующим образом:)