SPFolder.MoveTo 正在保留子文件夹的元数据,同时重置根文件夹的元数据

SPFolder.MoveTo is preserving the metadata for the sub-folders while reset the metadata for the root folder

我有以下控制台应用程序,它将一些文件夹从一个文档库移动到同一 SP 2013 网站集中的另一个文档库:-

 SPList sourceomslist = omsWeb.Lists.TryGetList("Order Management");
                        ;
   foreach (SPListItem currentItem in sourceomslist.Items)
          {

            if (currentItem["Status"].ToString() == "Closed")
                {

                             if (currentItem.ContentType.Name.ToLower().Contains("project"))
                       {
                         Console.WriteLine(currentItem["ID"]);
                         SPFolder folder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/Shared Documents/"+currentItem["ID"].ToString() );
                         folder.MoveTo(omsWeb.ServerRelativeUrl + "/ArchDocs/"+currentItem["ID"].ToString() );

                       }
               }

         }

现在 MoveTo 将保留子文件夹和文件的元数据,但它会重置已移动的根文件夹的元数据。 如果我可以强制 MoveTo 方法保留已移动的根文件夹的元数据数据,那么有人可以建议吗?

谢谢

由于目标库中不存在根文件夹,系统会先创建,所以Modified、Created会变成新的日期时间。我们需要在代码中修改它。

if (currentItem.ContentType.Name.ToLower().Contains("project"))
{
    Console.WriteLine(currentItem["ID"]);
    SPFolder folder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/Shared Documents/"+currentItem["ID"].ToString());
    var modified = folder.Item["Modified"];
    var created = folder.Item["Created"];    
    folder.MoveTo(omsWeb.ServerRelativeUrl + "/ArchDocs/" + currentItem["ID"].ToString());
    SPFolder tfolder = omsWeb.GetFolder(omsWeb.ServerRelativeUrl + "/ArchDocs/" + currentItem["ID"].ToString());
    tfolder.Item["Created"] = created;
    tfolder.Item["Modified"] = modified;
    tfolder.Item.UpdateOverwriteVersion();
}