Возможно, скорее, установить стандартное значение полей IsMain равным 0, а затем сбросить все элементы до этого стандартного значения. Для этого нет никакой функции, но этот код будет использоваться ниже.
Эта функция немного более надежна, чем ваше требование, но ее код у меня есть как есть.
Прежде всего, необходимо пользователю с необходимыми разрешениями для замены: ElevatedUserAccount
Следующая получить список элементов, которые вы хотели бы, чтобы сбросить значения затем создать список полей, которые вы хотите сбросить. В вашем случае AddressItem.Children и IsMain.
Окончательно передайте их нижеприведенным методам.
public void ResetFields(List<Item> items, List<string> fields)
{
if (items.Any() && fields.Any())
{
foreach (Item item in items)
{
ResetFieldsOnItem(item, fields);
}
}
}
public void ResetFieldsOnItem(Item item, List<string> fields)
{
if (item != null && fields.Any())
{
using (new Sitecore.Security.Accounts.UserSwitcher(ElevatedUserAccount, true))
{
item.Editing.BeginEdit();
foreach (string field in fields)
{
item.Fields[field].Reset();
}
item.Editing.EndEdit();
}
}
}
Вместо SecurityDisabler вы также можете использовать UserSwitcher, в чем ваша проблема ?, это не очень быстро ?. и, вероятно, вы хотите сделать это только в мастер-дБ? Для массовых операций вы также можете использовать Sitecore Rocks. –
Да, я также думаю, что это не так быстро, поэтому я разместил здесь свой вопрос. Я хочу знать быстрый способ достичь того же результата. – Kamran
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –