Перемещение SPListItems между различными базами данных контента - PullRequest
1 голос
/ 01 декабря 2009

У меня есть несколько SiteCollections, каждый SiteCollection со своей собственной базой данных ContentDatabase. Теперь несколько SPListItems добавляются в одну из SiteCollections, которые должны быть перемещены в другую SiteCollection и, следовательно, в другую ContentDatabase.

Вопрос заключается в следующем: как переместить элементы ListItems между этими различными коллекциями в другую базу данных ContentDatabase?

Одним из способов может быть экспорт элемента с помощью SPExport и импорт его в целевую базу данных. Но это довольно некрасиво, и в этот период наступает множество ListItems.

1 Ответ

2 голосов
/ 01 декабря 2009

Это единственный способ эффективно переместить элемент списка. К сожалению, вы теряете весь рабочий процесс и историю версий, связанные с ним. Естественно, если бы вы использовали этот код, ему потребовалась бы небольшая модификация, так как я перемещаю только элемент списка в том же SPWeb. Кроме того, вам необходимо выполнить проверку типа контента, чтобы убедиться, что те же поля доступны в списке адресатов.

        private void CopyItem(SPListItem sourceItem, string destinationListName)
        {
            SPList destinationList = sourceItem.Web.Lists[destinationListName];
            SPListItem targetItem = destinationList.Items.Add();
            foreach (SPField field in sourceItem.Fields)
            {
                if (!field.ReadOnlyField && field.InternalName != "Attachments")
                {
                    targetItem[field.Title] = sourceItem[field.Title];
                }
            }
            foreach (string fileName in sourceItem.Attachments)
            {
                SPFile file = sourceItem.ParentList.ParentWeb.GetFile(
                    sourceItem.Attachments.UrlPrefix + fileName);
                byte[] imageData = file.OpenBinary();
                targetItem.Attachments.Add(fileName, imageData);
            }
            targetItem.Update();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...