LINQ to SQL 增刪改

假設今天要更新一筆 Table tb(int No, string Name, string Favorite_Song) 中的資料呢?

 
  var tmp = new tb
  {
   tmp.No = 1,
   tmp.Name = “Veck",
   tmp.Favorite_Song = “Amazing Grace"
  };
 
  tb.InsertOnSubmit(tmp);   //在.NET 3.5 是 tb.Add(tmp);
  this.SubmitOnChange();    //一定要有這一行,不然資料會卡在記憶體,沒有寫入資料庫中


 var tmp = tb.single(c => c.No == 1);
 tb.DeleteOnSubmit(tmp);   //在.NET 3.5 是 tb.Remove(tmp);
 this.SubmitChange();

 
 var tmp = tb.single(c => c.No == 1);
 tmp.Name = “Kevin";
 this.SubmitChange();

*要稍微注意的是,如果要變動的資料表不只一個,或是有連動關係
有可能在更新的時候出現錯誤,但是資料某部分是有寫進去的
例如 tb1 和 tb2 以 No 做為 Foreign Key 連接,其中tb2為tb1的子資料表
今天若要新增一筆資料進tb2,必須先新增tb1一筆資料

var tmp = new tb1();
tmp.No = 2;
tb1.InsertOnSubmit(tmp);
this.SubmitChange();   //在這一行可能會出現錯誤,因為tb2中沒有同步新增 No = 2 的 Key

var tmp2 = new tb2();
tmp2.No = 2;
tb2.InsertOnSubmit(tmp);
this.SubmitChange();

 
var tmp = new tb1();
tmp.No = 2;
tb1.InsertOnSubmit(tmp);
var tmp2 = new tb2();
tmp2.No = 2;
tb2.InsertOnSubmit(tmp);
this.SubmitChange();      //差別在於只有在最後的時候才進行新增,這樣就不會有不同步的問題了

對「LINQ to SQL 增刪改」的一則回應

Veck 發表迴響 取消回覆

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s