(五)使用LINQ进行数据更新缓存
LINQ to SharePoint的优点不只在于能够方便快捷地进行SharePoint列表数据查询,SPMetal所生成的数据实体类其实是一个支持双向同步的模型,也就是意味着经过DataContext咱们还能够将数据的变更提交到SharePoint列表中。app
经过DataContext进行数据提交主要分红三个阶段:(1)确保DataContext支持数据提交,即其中的ObjectTrackingEnabled属性为true(默认值);(2)修改数据实体的内容;(3)调用DataContext的SubmitChanges方法提交数据。less
一、数据的新建spa
在向列表中新建条目的时候,咱们能够建立一个实体对象,并将其加入到相应的列表(EntityList)中,以下例所示:code
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方法同时插入多个数据实体,好比将在一个列表中的查询结果一次性添加到另一个使用相同内容类型的列表中。对象
二、数据的修改ip
在DataContext中,对SharePoint列表数据的修改,能够直接对其中的数据实体进行修改,再调用SubmitChanges进行数据更新,例如:get
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: }
三、数据的删除同步
与数据添加相似,数据的删除使用EntityList的DeleteOnSubmit方法删除一个实体(即一个列表条目),使用DeleteAllOnSubmit方法删除多个实体,例如:it
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