SharePoint服务器端对象模型 之 使用LINQ进行数据访问操作(Part 3)
(五)使用LINQ进行数据更新
LINQ to SharePoint的优势不仅在于可以方便快捷地进行SharePoint列表数据查询,SPMetal所生成的数据实体类实际上是一个支持双向同步的模型,也就是意味着通过DataContext我们还可以将数据的变动提交到SharePoint列表中。
通过DataContext进行数据提交主要分成三个阶段:(1)确保DataContext支持数据提交,即其中的ObjectTrackingEnabled属性为true(默认值);(2)修改数据实体的内容;(3)调用DataContext的SubmitChanges方法提交数据。
1、数据的新建
在向列表中新建条目的时候,我们可以创建一个实体对象,并将其加入到相应的列表(EntityList)中,如下例所示:
1: using (BookDataContext ctx =
2: new BookDataContext("http://sp2010/book"))
3: {
4: var newChpater =
5: new Chapters项目()
6: {
7: 标题 = "Ch02",
8: Name = "Visual Studio 2010",
9: Writer = "Kaneboy"
10: };
11: ctx.Chapters.InsertOnSubmit(newChpater);
12: ctx.SubmitChanges();
13: }
在向列表中提交新数据的时候,需要使用EntityList的InsertOnSubmit方法添加相应的数据实体。同样的,也可以使用InsertAllOnSubmit方法同时插入多个数据实体,比如将在一个列表中的查询结果一次性添加到另外一个使用相同内容类型的列表中。
2、数据的修改
在DataContext中,对SharePoint列表数据的修改,可以直接对其中的数据实体进行修改,再调用SubmitChanges进行数据更新,例如:
1: using (BookDataContext ctx =
2: new BookDataContext("http://sp2010/book"))
3: {
4: foreach(var ch in ctx.Chapters)
5: ch.Writer = "kaneboy";
6: ctx.SubmitChanges();
7: }
3、数据的删除
与数据添加类似,数据的删除使用EntityList的DeleteOnSubmit方法删除一个实体(即一个列表条目),使用DeleteAllOnSubmit方法删除多个实体,例如:
1: using (BookDataContext ctx =
2: new BookDataContext("http://sp2010/book"))
3: {
4: var uselessChapters = from chp in ctx.Chapters
5: where chp.Name.Contains("[过时]")
6: select chp;
7: ctx.Chapters.DeleteAllOnSubmit(uselessChapters);
8: ctx.SubmitChanges();
9: }
和列表条目(即SPListItem)的Delete方法一样,EntityList的DeleteOnSubmit和DeleteAllOnSubmit均是将列表条目彻底删除掉。如果只是希望将内容删除到回收站中,应使用RecycleOnSubmit和RecycleAllOnSubmit方法。
提示:与DataSet类似,由于DataContext是先将数据缓存,修改后再统一进行提交,因此在多人协同编辑的真实环境中也不可避免的会出现数据提交冲突问题。关于冲突的解决,由于篇幅所限不在这里列出,有兴趣的读者可以参考如下网址:
http://msdn.microsoft.com/en-us/library/ee538246(office.14).aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述