Я не могу ответить в контексте nhibernate (который я не использую) или лучших практик (я недавно придумал это самостоятельно). Тем не менее, это работает хорошо для меня, и, вероятно, будет работать для вас.
У меня есть таблица (Biz_Config) в базе данных для хранения бизнес-предпочтений. (Я создал раздел web.config для того, что я называю настройками ИТ.)
У меня есть класс, который отвечает за управление настройками бизнеса. Конструктор захватывает всю таблицу (по одной строке на настройку) и копирует их в словарь, и у него есть методы для доступа (например, bizconfig.get ("key")) и обновления этого словаря, одновременно обновляя таблицу , У этого также есть несколько свойств быстрого доступа для определенных значений словаря, особенно, где значение должно быть приведено (у меня есть несколько важных чисел). Работает довольно хорошо.
Чтобы быть более эффективным и не создавать его каждый раз, когда мне нужна настройка, а также для легкого доступа к ней из моих контроллеров и представлений, я создал статический класс, Globals, который отвечает за извлечение вещей из переменные сеанса или приложения. Для объекта конфигурации biz он проверяет переменную приложения и, если имеет значение null, создает новую. В противном случае он просто возвращает его. Globals является частью моего пространства имен помощников, которое включено в мой web.config, чтобы быть доступным для моих просмотров. Так что я могу легко позвонить:
<% Globals.Biz_Config.Get("key") %>
Надеюсь, это поможет. Если вам нужен код, я могу откопать его для вас.
Джеймс