(五)使用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