我需要以编程方式将文件和元数据一起添加到文档库和事件处理程序中。我在异步“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方法时。还有另一种方法可以在只创建一个版本的情况下执行此操作吗?
提前致谢!
答案 0 :(得分:8)
使用
destItem.SystemUpdate( false );
代替.Update()以避免创建新版本。
答案 1 :(得分:2)
Add()方法有一个覆盖,它接受一个哈希表来传递元数据和文件。这样就不需要调用Update()或SystemUpdate()方法。