ContentTypeCollection ListContentTypes = List.ContentTypes; clIEntContext.Load(ListContentTypes,types => types.Include (type => type.ID,type => type.name,type => type.Parent)); var result = clIEntContext.Loadquery(ListContentTypes.Where(c => c.name == "Folder"));clIEntContext.Executequery();ContentType folderContentType = result.FirstOrDefault();ListItemCreationinformation newItemInfo = new ListItemCreationinformation();newItemInfo.UnderlyingObjectType = fileSystemObjectType.Folder;newItemInfo.Leafname = Foldername;ListItem newListItem = List.AddItem(newItemInfo);newListItem["ContentTypeID"] = folderContentType.ID.ToString();newListItem["Title"] = Foldername;ewListItem.Update();clIEntContext.Load(List);clIEntContext.Executequery();
现在我在库上创建了数千个文件夹.
那么有什么其他方法我可以使用批量 *** 作来做到这一点,所以客户端到服务器的连接只会被调用一次.
问题是创建文件夹需要花费太多时间,因为对于每个文件夹,它都会调用SharePoint对象.
解决方法 这很简单.只需将要创建的所有文件夹添加到列表中,然后在运行Executequery函数之前遍历列表并创建所有列表项:List<string> foldernames = new List<string>(); foldernames.Add("Folder 1"); foldernames.Add("Folder 2"); foldernames.Add("Folder 3"); ClIEntContext context = new ClIEntContext("https://sharepoint.Site/Test"); List List = context.Web.Lists.GetByTitle("documents"); var folder = List.RootFolder; context.Load(folder); context.Executequery(); foreach (string foldername in foldernames) { ListItemCreationinformation newItemInfo = new ListItemCreationinformation(); newItemInfo.UnderlyingObjectType = fileSystemObjectType.Folder; newItemInfo.Leafname = foldername; ListItem newListItem = List.AddItem(newItemInfo); newListItem["Title"] = foldername; newListItem.Update(); } context.Executequery();
奇迹般有效.您只需要在运行任何CSOM代码之前暂存所有文件夹路径/名称.
总结以上是内存溢出为你收集整理的c# – 使用客户端对象模型在SharePoint文档库上创建文件夹全部内容,希望文章能够帮你解决c# – 使用客户端对象模型在SharePoint文档库上创建文件夹所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)