2010-08-05 5 views
2

У меня есть решение, которое копирует все содержимое списков SharePoint в файл, а затем копирует содержимое файла обратно в SharePoint (используется для резервного копирования и переключателей этапа/живого окружения).Список SharePoint - Копировать SPListItem ID

Теперь я могу скопировать все поля, мне нужно, за исключением одного: ID

Я понимаю, что это только для чтения поле, но некоторые другие только для чтения поля могут быть обновлены (Created, Author, Modified, редактор, _ModerationStatus и _ModerationComments из того, что я тестировал)

Я не могу использовать метод CopyTo, потому что я не могу получить доступ к списку адресатов.

Я хочу иметь идентификаторы, потому что я не хочу разорвать все http://siteCollection//Lists/Posts/Post.aspx?ID= ... URL-адреса, которые отображаются во всем содержимом моего веб-сайта.

Так что в основном система, которую я сейчас (что толкает все, кроме идентификатора), работает хорошо, пока ничего не удаляется из списка. Когда что-то удаляется (например, ID = 1), первый элемент становится ID = 2, и когда я нажимаю его в пустом списке адресатов, он становится ID = 1.

Есть ли способ принудительно установить идентификатор для SPListItem? Это почти наверняка будет взлом, но, возможно, у кого-то есть способ?

Спасибо!

ответ

3

Ну, если вы этого хотите, почему бы не создать фиктивный элемент с ID = 1, а затем удалить его? это не должно быть слишком сложно добавить эту логику

+0

Я надеялся, что я не буду делать что-то подобное, но я пойду за это, если это мой единственный вариант. –

+0

Закончено с этим. Благодаря! –

2

В API Content Deployment and Migration может быть что-то подобное, чтобы вы могли это сделать.

Первое, на что я бы посмотрел, это Gary Lapointe STSADM extensions, так как он проделал большую работу по расширению встроенных команд, включая imports that keep original GUID's intact.

+0

Вау, я не могу поверить, что никогда не слышал о API развертывания контента и миграции. Посмотрите на него и сделайте несколько тестов. На первый взгляд, не уверен, что он может делать то, что я хочу, но он предлагает множество вариантов. –

+2

Спасибо за предложения. Мне удалось сохранить GUID, поля и т. Д. В принципе, все, кроме идентификаторов, которые я хотел сохранить. API Content Deployment and Migration также не разрешил. Я думаю, вы просто не можете заставить поле идентификации в базе данных ... Закончилось создание фиктивных элементов, чтобы заполнить пробелы идентификатора. –

+0

Спасибо за обновление - кажется, вопиющий недосмотр! – Ryan