Sharepoint: Что происходит со списками на основе типа контента при обновлении типа контента? - PullRequest
9 голосов
/ 15 января 2009

У меня есть своего рода гипотетический вопрос (по крайней мере, на данный момент:))

Допустим, я создаю список на основе некоторого пользовательского типа контента. Я добавляю около 1000 предметов в этот список (в производстве). Затем приходит клиент и говорит, что ему нужно изменить этот пользовательский тип контента.

Что произойдет со списком, если я изменю пользовательский тип контента? Будет ли оно обновляться автоматически (сомневаюсь)? А как насчет уже созданных элементов списка?

Кто-нибудь из вас имеет опыт с этим?

Ответы [ 2 ]

16 голосов
/ 19 января 2009

Итак, пара вопросов, касающихся типов контента:

Прежде всего, типы контента бывают двух видов: типы контента сайта и типы контента списка. Типы контента сайта - это «шаблоны», которые находятся в галерее. Когда тип контента сайта используется в списке, тип контента создается как тип контента списка в данном списке.

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

Если вы создали тип контента с помощью графического интерфейса пользователя или с помощью пользовательского кода с помощью API, то и типы контента вашего сайта, и типы контента вашего списка находятся в состоянии «только для базы данных» в базе данных. Это означает, что он ищет в базе данных определения типа контента.

Если вы создали тип контента как функцию в CAML , ваш site тип контента будет скрыт (или не настроен, как мы должны называть его в v3) в база данных. В основном это означает, что база данных в функции XML в 12-улье ищет столбцы сайта, которые составляют тип контента. Так что это должно означать, что вы можете обновить функцию, и у вас будут новые столбцы сайта, доступные в типе содержимого обновления, верно?

К сожалению, нет: помните, что у нас также были списки типов контента? Облом здесь заключается в том, что эти типы содержимого списка создаются с использованием кода, поэтому они находятся в состоянии «только для базы данных». Это означает, что ваши изменения будут видны только в типах контента вашего сайта, но не в существующих списках, использующих этот тип контента!

Существует несколько подходов к решению этой проблемы, решение зависит от ваших потребностей и изменений, которые вы делаете (удаление полей, добавление полей, изменение полей).

Например, вы часто хотите сохранить существующие метаданные элемента, даже если тип содержимого меняется со временем. Если вы проталкиваете изменения в типе содержимого списка с помощью кода, вы потеряете данные, хранящиеся в измененных / удаленных полях. Решением этой проблемы является добавление совершенно нового типа контента на основе старого, но с измененными полями. Вы бы добавили новый тип контента (с помощью кода или с использованием функционального XML) и использовали приемник функций или аналогичный для распространения нового типа контента во всех списках, в которых использовался старый тип контента, и впоследствии помечали старый тип контента как скрытый. Это позволило бы сохранить старые метаданные, но не добавлять новые элементы, используя другие, чем новые метаданные.

Подход, упомянутый в другом ответе на этот вопрос, предпочтительнее, если у вас есть прямой доступ к производственной среде и если ваш план управления клиентами позволяет это. Однако, как и в случае с другими артефактами в SharePoint, рекомендуется развертывать типы контента структурированным образом. Добавление новых типов контента неструктурированным образом может повлиять на релевантность поиска (управляемые свойства) и также повлиять на общую таксономию сайта (повторное использование столбцов сайта и т. Д.), Поэтому даже если эти изменения можно добавить непосредственно в производственная площадка, я бы не рекомендовал ее!

Это подводит меня к последнему подходу, который я бы рекомендовал, по крайней мере для будущих типов контента: создавайте свои типы контента программно с самого начала, используя приемник функций! Таким образом, вы всегда будете знать истинное состояние ваших типов контента (только для базы данных), и у вас может быть структурированный подход для управления изменениями в будущем! Вы можете найти несколько способов сделать это, прибегая к помощи «создания« типов контента »программно SharePoint»

Для полноты: я упомянул три режима. Последний режим, в котором может быть выбран тип вашего контента - «UnGhosted». Это означает, что ваш тип контента был создан с использованием функции XML, но он был отключен от исходного источника XML в улье 12.

У моего друга Сёрена Нильсена есть несколько полезных советов по типам контента яn Аудит иерархии типов контента . Некоторые из проблем, описанных выше, можно кратко упомянуть в статье MSDN Обновление типов контента . У Гэри Лапойнта также есть расширение STSADM, которое решает некоторые проблемы с типами контента, см. Распространение изменений типов контента .

Извините за напыщенную речь, но предмет сложный и требует тщательного объяснения, чтобы избежать каких-либо заблуждений.

3 голосов
/ 15 января 2009

Когда вы обновляете тип контента, появляется флажок, который вы можете щелкнуть, чтобы обновить дочерние типы контента. При установке этого флажка типы содержимого списка будут обновлены.

Обратите внимание, что если вы установите , а не , установите флажок для обновления дочерних типов контента, то позднее принудительное обновление будет невозможно. Таким образом, если вы не обновляете и позже хотите, чтобы дочерние типы контента имели обновление, вам сначала нужно отменить обновление и повторно его применить.

.b

...