Схема изменения EPiServer DDS для типа

Я сохраняю тип в DDS EPiServer, который имеет несколько свойств, таких как string и guid. Теперь я хочу добавить к этому типу новое свойство строки типа. Как можно заставить DDS распознать новое свойство, добавленное к типу, и добавить его в схему для типа в DDS.


person Jet Basrawi    schedule 02.12.2010    source источник


Ответы (2)


Вам нужно переназначить тип на хранилище следующим образом:

Допустим, ваш класс называется Car

var store = DynamicDataStoreFactory.Instance.GetStore(typeof(Car)); store.StoreDefinition.Remap(typeof(Car)); store.StoreDefinition.CommitChanges();

Если вы собираетесь использовать экземпляр магазина сразу после этого, выполните обновление:

магазин.Обновить();

Дополнительную информацию о DDS можно найти здесь: http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-6/EPiServer-CMS-60/Dynamic-Data-Store/

Пол Смит Разработчик Евангелист EPiServer

person Paul Smith - EPiServer    schedule 02.12.2010
comment
Привет, Пол, спасибо за этот ответ, который решил большую часть проблемы для меня, теперь проблема заключается просто в том, где на самом деле можно делать эти звонки? Под этим я подразумеваю, что это может происходить только изредка, и поэтому я думаю, что это то, что следует запускать один раз во время разработки, например, скрипт для переназначения, а не общую часть кодовой базы с использованием DDS. как вы использовали это в прошлом? - person Jet Basrawi; 02.12.2010

Следующая версия CMS/EPiServer Framework будет поставляться с командлетом PowerShell, позволяющим делать это из скрипта.

Для версии CMS 6 я предлагаю вам добавить код в Global.asax или создать модуль инициализации.

(http://world.episerver.com/Blogs/Magnus-Strale/Dates/2010/2/Changes-in-the-initialization-system-from-EPiServer-CMS-6-RC1/)

Сначала вы можете проверить, выровнены ли тип и хранилище:

var store = DynamicDataStoreFactory.Instance.GetStore(typeof(Car)); if (!store.StoreDefinition.ValidateAgainstMappings(typeof(Car), false)) { store.StoreDefinition.Remap(typeof(Car)); store.StoreDefinition.CommitChanges(); }

Таким образом, вы только переназначаете, когда это необходимо.

person Paul Smith - EPiServer    schedule 03.12.2010
comment
Спасибо, Павел, очень помогает. - person Jet Basrawi; 06.12.2010