就也是一個念資訊的大學生,涉足領域在網路、資安、程設、系統、網設..... Next City @ Veck:http://veck.logdown.com/
2011年12月11日 星期日
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(); //差別在於只有在最後的時候才進行新增,這樣就不會有不同步的問題了
訂閱:
張貼留言 (Atom)
MSDN Blog Information =>
回覆刪除http://blogs.msdn.com/b/jongallant/archive/2007/12/01/linq-add-renamed-to-insertonsubmit.aspx
網誌管理員已經移除這則留言。
回覆刪除