#sharepoint-2010 #sharepoint-clientobject
#sharepoint-2010 #sharepoint-clientobject
Вопрос:
Я создаю инструмент экспорта Sharepoint 2010 для резервного копирования (немного похожий на filemanager из Metavis).
При загрузке файла на локальный диск мне необходимо создать резервную копию метаданных, связанных с документом. Который я сохраню в csv-файле. Моим первым подходом было перебрать все значения ListItem.fieldvalues, но на самом деле это не работает, потому что некоторые значения полей являются сложными типами, что излишне усложнило бы файл резервной копии. Некоторые значения даже имеют окончания строк, например «MetaInfo». Кроме того, не все значения необходимы для восстановления содержимого, когда это может быть необходимо.
Итак, моя идея состоит в том, чтобы получать только значения из коллекции значений полей, которые необходимы для выполнения функционального восстановления, дополненные всеми добавленными пользователем метаданными.
Для этого я хочу проверить все значения полей по списку исключений, чтобы узнать, присутствует ли он. Если он присутствует, не создавайте резервную копию. Если это так, то это либо сгенерированные пользователем метаданные, либо значение, которое мне нужно, например, «автор», «создано».
Итак, мой вопрос в том, знает ли кто-нибудь список всех ключей значений полей? Или есть лучший подход к моей проблеме?
Спасибо
Обновление: Ну, поскольку я перебирал коллекцию значений полей любым способом. Было легко сделать дамп всех значений в формате CSV. Для получения всех значений было достаточно запустить его один раз. Теперь все, что мне нужно написать, это XML-файл для настройки. Это оставляет вопрос: есть ли лучший способ сделать это?
Ответ №1:
Отфильтруйте поля списка, написав следующий код с помощью System; с помощью Microsoft.SharePoint.Клиент;
clientContext.Load(
listItems,
items => items
.Include(
item => item["Title"],
item => item["Category"],
item => item["Estimate"]));
Вы можете создать представление со всеми полями, получить представление с помощью объектной модели sharepoint и получить имя его столбца из коллекции и отфильтровать их в соответствии с вашими требованиями.
Комментарии:
1. Я использовал объектную модель клиента. Насколько я могу судить по вашему фрагменту кода, все еще требуется некоторая настройка; при получении элементов со строкой эта строка должна быть каким-то образом известна. Что возвращает нас к началу. Как узнать все значения?
Ответ №2:
Я завершил работу с приложением. Как я писал в своем обновлении, я составил список всех значений полей, экспортировав их в файл CSV. После этого я создал конфигурационный файл с логическим значением «Backup». Это позволяет контролировать, какие значения должны использоваться при создании резервной копии.
Я оглядываюсь назад, я думаю, что файл конфигурации не был нужен. Значения, используемые при резервном копировании, являются настолько важной частью всей работы программы, что файл конфигурации создает у администратора или обычного будущего разработчика впечатление, что простая перенастройка удовлетворит его потребности.
Теперь я вижу, что если программа нуждается в изменении из-за новых требований, код должен быть изменен в любом случае. Таким образом, даже если присвоить значение ‘True’, результат изменится. Также необходимо написать некоторый другой код. Если бы я должен был написать это снова, я бы, вероятно, использовал константы. Это делает все это менее динамичным, но по-прежнему удовлетворяет потребности программы.
(Кстати, неплохо было бы начать со списка всех имен, отличных от стандартных значений полей. Я бы опубликовал его здесь, но у меня больше нет доступа к файлу, потому что я недавно сменил работу.)