Добавить документ и метаданные в библиотеку документов, не создавая 2 версий - PullRequest
4 голосов
/ 01 декабря 2009

У меня есть требование для программного добавления файла вместе с метаданными в библиотеку документов и в обработчик событий. Я использую следующий код в асинхронных событиях «ItemAdded» и «ItemUpdated»:

SPFile destFile = web.Files.Add(newUrl, newFile, true);

SPListItem destItem;
if (destFile.Item != null)
{
    destItem = destFile.Item;
}
else
{
    destItem = list.Items.Add(folderUrl, SPFileSystemObjectType.File);
}

foreach (DictionaryEntry property in properties)
{
    destItem.Properties[property.Key.ToString()] = property.Value;
}

destItem.Update();

Однако при каждом добавлении файла создаются две версии: одна при вызове метода Files.Add и одна при вызове метода SPListItem.Update. Есть ли другой способ сделать это, когда будет создана только одна версия?

Заранее спасибо!

Ответы [ 2 ]

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

Использование

destItem.SystemUpdate( false );

вместо .Update (), чтобы избежать создания новой версии.

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

Метод Add () имеет переопределение, которое принимает хеш-таблицу для передачи метаданных вместе с файлом. Таким образом, нет необходимости вызывать методы Update () или SystemUpdate ().

...