В DevExpress eXpressApp Framework (XAF), начиная с версии 14.2, появилась возможность сохранять пользовательские настройки и настройки приложения (т.н. model differences) в базе данных приложения (How to: Store the Application Model Differences in the Database). Эта возможность реализуется с помощью класса DevExpress.ExpressApp.ModelDifferenceDbStore.

Платформа Xafari предоставляет аналогичную возможность. Она реализована в модуле Xafari.DatabaseUserSettings.DatabaseUserSettingsModule (сборка Xafari.DatabaseUserSettings.dll).

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

Однако, если по каким-либо причинам возникает потребность в использовании решения от DevExpress, либо потребуется использовать любую другую модель хранения пользовательских настроек, это можно сделать. При этом нужно учитывать особенности управления хранилищами пользовательских настроек в Xafari.

Платформа Xafari использует собственный механизм по управлению хранилищами пользовательских настроек (Хранение пользовательских настроек в БД). Этот механизм обеспечивается классом Xafari.ModelDifferenceStoreManager. Использование Xafari.ModelDifferenceStoreManager вводит определенные требования к процедуре подключения альтернативных классов хранилищ. Во избежание конфликтов с компонентами Xafari Framework необходимо придерживаться этих требований.

Ниже описана процедура использования решения DevExpress для хранения настроек в БД.
1. Создать класс - фабрику экземпляров хранилищ пользовательских настроек. Этот класс является наследником базового абстрактного класса Xafari.ModelDifferenceStoreFactory:

2. В перекрытом методе ModuleBase.Setup модуля Вашего приложения зарегистрировать фабрику:

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

Следует обратить внимание, что в данной статье речь идет о хранении только пользовательских настроек. Настройками приложения класс ModelDifferenceStoreManager в настоящее время не управляет и подключение альтернативных хранилищ настроек приложения выполняется обычным образом - обработкой сообщения DevExpress.ExpressApp.XafApplication.CreateCustomModelDifferenceStore, как это описано в How to: Store the Application Model Differences in the Database):