日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Linq調(diào)用SubmitChanges方法

Linq SubmitChanges方法計(jì)算要插入、更新或刪除的已修改對(duì)象的集,并執(zhí)行相應(yīng)命令以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的更改。

創(chuàng)新互聯(lián)是一家專(zhuān)注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)與策劃設(shè)計(jì),禹城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:禹城等地區(qū)。禹城做網(wǎng)站價(jià)格咨詢(xún):13518219792

無(wú)論對(duì)象做了多少項(xiàng)更改,都只是在更改內(nèi)存中的副本。并未對(duì)數(shù)據(jù)庫(kù)中的實(shí)際數(shù)據(jù)做任何更改。直到對(duì)DataContext顯式Linq SubmitChanges,所做的更改才會(huì)傳輸?shù)椒?wù)器。調(diào)用時(shí),DataContext會(huì)設(shè)法將我們所做的更改轉(zhuǎn)換為等效的SQL命令。我們也可以使用自己的自定義邏輯來(lái)重寫(xiě)這些操作,但提交順序是由DataContext的一項(xiàng)稱(chēng)作“更改處理器”的服務(wù)來(lái)協(xié)調(diào)的。事件的順序如下:
1. 當(dāng)Linq SubmitChanges方法時(shí),LINQ to SQL會(huì)檢查已知對(duì)象的集合以確定新實(shí)例是否已附加到它們。如果已附加,這些新實(shí)例將添加到被跟蹤對(duì)象的集合。
2. 所有具有掛起更改的對(duì)象將按照它們之間的依賴(lài)關(guān)系排序成一個(gè)對(duì)象序列。如果一個(gè)對(duì)象的更改依賴(lài)于其他對(duì)象,則這個(gè)對(duì)象將排在其依賴(lài)項(xiàng)之后。
3. 在即將傳輸任何實(shí)際更改時(shí),LINQ to SQL會(huì)啟動(dòng)一個(gè)事務(wù)來(lái)封裝由各條命令組成的系列。
4. 對(duì)對(duì)象的更改會(huì)逐個(gè)轉(zhuǎn)換為SQL命令,然后發(fā)送到服務(wù)器。

如果數(shù)據(jù)庫(kù)檢測(cè)到任何錯(cuò)誤,都會(huì)造成提交進(jìn)程停止并引發(fā)異常。將回滾對(duì)數(shù)據(jù)庫(kù)的所有更改,就像未進(jìn)行過(guò)提交一樣。DataContext 仍具有所有更改的完整記錄。

下面代碼說(shuō)明的是在數(shù)據(jù)庫(kù)中查詢(xún)CustomerID為ALFKI的顧客,然后修改其公司名稱(chēng),***次更新并Linq SubmitChanges方法,第二次更新了數(shù)據(jù)但并未Linq調(diào)用SubmitChanges方法。

 
 
 
  1. //查詢(xún)  
  2. Customer cust = db.Customers.First(c => c.CustomerID == "ALFKI");  
  3. //更新數(shù)據(jù)并調(diào)用SubmitChanges()方法  
  4. cust.CompanyName = "YJingLee's Blog";  
  5. db.SubmitChanges();  
  6. //更新數(shù)據(jù)沒(méi)有調(diào)用SubmitChanges()方法  
  7. cust.CompanyName = "http://lyj.cnblogs.com"; 

動(dòng)態(tài)查詢(xún)

使用動(dòng)態(tài)查詢(xún),這個(gè)例子用CreateQuery()方法創(chuàng)建一個(gè)IQueryable 類(lèi)型表達(dá)式輸出查詢(xún)的語(yǔ)句。這里給個(gè)例子說(shuō)明一下。有關(guān)動(dòng)態(tài)查詢(xún)具體內(nèi)容,下一篇介紹。

 
 
 
  1. var c1 = Expression.Parameter(typeof(Customer), "c");  
  2. PropertyInfo City = typeof(Customer).GetProperty("City");  
  3.  
  4. var pred = Expression.Lambda, bool>>(  
  5. Expression.Equal(  
  6. Expression.Property(c1, City),  
  7. Expression.Constant("Seattle")  
  8. }  
  9. };  
  10. IQueryable custs = db.Customers;  
  11. Expression expr = Expression.Call(typeof(Queryable), "Where",  
  12. new Type[] { custs.ElementType }, custs.Expression, pred);  
  13. IQueryable q = db.Customers.AsQueryable().  
  14. Provider.CreateQuery(expr); 

Log屬性用于將SQL查詢(xún)或命令打印到TextReader。此方法對(duì)了解 LINQ to SQL 功能和調(diào)試特定的問(wèn)題可能很有用。

下面的示例使用Log屬性在SQL代碼執(zhí)行前在控制臺(tái)窗口中顯示此代碼。我們可以將此屬性與查詢(xún)、插入、更新和刪除命令一起使用。

 
 
 
  1. //關(guān)閉日志功能  
  2. //db.Log = null;  
  3. //使用日志功能:日志輸出到控制臺(tái)窗口  
  4. db.Log = Console.Out;  
  5. var q = from c in db.Customers  
  6. where c.City == "London"  
  7. select c;  
  8. //日志輸出到文件  
  9. StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true);  
  10. db.Log = sw;  
  11. var q = from c in db.Customers  
  12. where c.City == "London"  
  13. select c;  
  14. sw.Close(); 

【編輯推薦】

  1. Linq結(jié)果集形狀概述
  2. Linq存儲(chǔ)過(guò)程返回詳解
  3. Linq調(diào)用LoadProducts方法
  4. Linq使用數(shù)據(jù)表簡(jiǎn)單描述
  5. Linq對(duì)象引用簡(jiǎn)單介紹

分享標(biāo)題:Linq調(diào)用SubmitChanges方法
分享路徑:http://m.5511xx.com/article/ccoiicp.html