В Xafari реализован механизм хранения Model Differences и User Model Differences в базе данных. Для этого используется инфрастуктура управления хранилищами Xafari Model Differences. Реализация Xafari основана на механизмах DevExpress XAF:

Для управления хранящимися в БД Model Differences используются контроллеры DevExpress. Функциональность реализована в сборке Xafari.ModelDifferencesDb.dll. Чтобы использовать эту функциональность, выполните следующее:

Если единая база данных совместно используется приложениями под платфомы Win и Web, настройки одного и того же пользователя также будут использоваться совместно. Это не всегда желательно, т.к. некоторые свойства модели на Win и Web различаются (например, используются различные редакторы свойств). В этом случае, с целью разграничения настроек для разных платформ, можно использовать метод Xafari.ModelDifferenceStoreParamsEventArgs.AddContext string), описанный в разделе секции Руководство разработчика (см. раздел CustomizeModelDifferenceStoreParamsEventArgs). С его помощью можно расширить контекст, например, для web-модуля добавить сегмент со значением «WEB».

 

public TestSolutionDiffsDbStoreAspNetModule()

{

 InitializeComponent();

 ModelDifferenceStoreManager.Instance.BeforeChangeStoreFactory +=

 OnBeforeChangeStoreFactory;

 ModelDifferenceStoreManager.Instance.AfterChangeStoreFactory +=

 OnAfterChangeStoreFactory;

}

 

private void OnAfterChangeStoreFactory (object sender, ChangeStoreFactoryEventArgs e)

{

if (e.StoreFactory != null)

   e.StoreFactory.CustomizeModelDifferenceStoreParams += OnCustomizeParams;

}

 

private void OnBeforeChangeStoreFactory (object sender, ChangeStoreFactoryEventArgs e)

{

 if (e.StoreFactory != null)

   e.StoreFactory.CustomizeModelDifferenceStoreParams -= OnCustomizeParams;

}

 

private void OnCustomizeParams (object sender, ModelDifferenceStoreParamsEventArgs e)

{

 e.AddContext("WEB");

}

Администрирование модели в базе данных.

Администрирование Model Differences, хранящихся в базе данных выполняется посредством списковой формы XafariModelDifference_ListView. Для выполнения функций администрирования необходимо в панель навигации приложения добавить указанную списковую форму. При активации этой списковой формы в меню «Инструменты» ("Tools") появятся дополнительные пункты (см. https://documentation.devexpress.com/#eXpressAppFramework/CustomDocument113704).