成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LINQ to SQL事務模型剖析

開發 后端
這里介紹三種LINQ to SQL事務模型,分別是:顯式本地事務、顯式可分發事務和隱式事務,以及介紹Implicit(隱式)和Explicit(顯式)。

本文向大家介紹LINQ to SQL事務模型,可能好多人還不了解LINQ to SQL事務模型,沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

三種LINQ to SQL事務模型,分別是:
◆顯式本地事務:調用 SubmitChanges 時,如果 Transaction 屬性設置為事務,則在同一事務的上下文中執行 SubmitChanges 調用。成功執行事務后,要由您來提交或回滾事務。與事務對應的連接必須與用于構造 DataContext 的連接匹配。如果使用其他連接,則會引發異常。
◆顯式可分發事務:可以在當前 Transaction 的作用域中調用 LINQ to SQL API(包括但不限于 SubmitChanges)。LINQ to SQL 檢測到調用是在事務的作用域內,因而不會創建新的事務。在這種情況下,<token>vbtecdlinq</token> 還會避免關閉連接。您可以在此類事務的上下文中執行查詢和 SubmitChanges 操作。
◆隱式事務:當您調用 SubmitChanges 時,LINQ to SQL 會檢查此調用是否在 Transaction 的作用域內或者 Transaction 屬性是否設置為由用戶啟動的本地事務。如果這兩個事務它均未找到,則 LINQ to SQL 啟動本地事務,并使用此事務執行所生成的 SQL 命令。當所有 SQL 命令均已成功執行完畢時,LINQ to SQL 提交本地事務并返回。

1.Implicit(隱式)

說明:這個例子在執行SubmitChanges()操作時,隱式地使用了事務。因為在更新2種產品的庫存數量時,第二個產品庫存數量為負數了,違反了服務器上的 CHECK 約束。這導致了更新產品全部失敗了,系統回滾到這個操作的初始狀態。

  1. try  
  2. {  
  3. Product prod1 = db.Products.First(p => p.ProductID == 4);  
  4. Product prod2 = db.Products.First(p => p.ProductID == 5);  
  5. prod1.UnitsInStock -3;  
  6. prod2.UnitsInStock -5;//錯誤:庫存數量的單位不能是負數  
  7. //要么全部成功要么全部失敗  
  8. db.SubmitChanges();  
  9. }  
  10. catch (System.Data.SqlClient.SqlException e)  
  11. {  
  12. //執行異常處理  

2.Explicit(顯式)

說明:這個例子使用顯式事務。通過在事務中加入對數據的讀取以防止出現開放式并發異常,顯式事務可以提供更多的保護。如同上一個查詢中,更新 prod2 的 UnitsInStock 字段將使該字段為負值,而這違反了數據庫中的 CHECK 約束。這導致更新這兩個產品的事務失敗,此時將回滾所有更改。以上介紹LINQ to SQL事務模型

  1. using (TransactionScope ts = new TransactionScope())  
  2. {  
  3. try  
  4. {  
  5. Product prod1 = db.Products.First(p => p.ProductID == 4);  
  6. Product prod2 = db.Products.First(p => p.ProductID == 5);  
  7. prod1.UnitsInStock -3;  
  8. prod2.UnitsInStock -5;//錯誤:庫存數量的單位不能是負數  
  9. db.SubmitChanges();  
  10. }  
  11. catch (System.Data.SqlClient.SqlException e)  
  12. {  
  13. //執行異常處理  
  14. }  

【編輯推薦】

  1. LINQ查詢操作經驗總結
  2. LINQ遍歷多個數組深入剖析
  3. Linq查詢Access數據文件淺談
  4. LINQ構建框架設計學習筆記
  5. LINQ重要組成部分簡介
責任編輯:佚名 來源: 51CTO.com
相關推薦

2009-09-09 14:40:43

Linq to sql

2009-09-18 17:17:58

LINQ模型

2009-09-07 16:25:14

Linq To SQL

2009-09-16 09:56:42

LINQ to SQL

2009-09-17 15:22:38

LINQ to SQL

2009-09-15 10:59:10

LinQ to SQL

2009-09-18 15:10:13

分布式事務LINQ TO SQL

2009-09-15 10:12:37

LINQ To SQL

2009-09-10 14:37:57

LINQ匿名類型

2009-09-16 16:59:05

LINQ to XML

2009-09-17 13:15:20

LINQ查詢

2009-09-18 14:07:51

LINQ to SQL

2009-09-09 16:21:31

Linq使用sqlme

2009-09-14 10:13:02

LINQ查詢操作

2009-09-14 15:12:40

LINQ to XML

2009-09-09 13:39:05

Linq用戶定義函數

2009-09-14 10:35:15

Linq內部執行原理

2009-09-15 14:52:15

linq級聯刪除

2009-09-08 15:39:13

Linq使用Inser

2009-09-17 09:20:34

Linq和dLinq區
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天干天天操天天看 | 国产精品观看 | 亚洲免费成人 | 精品成人免费一区二区在线播放 | 五月婷婷在线视频 | 91电影 | 国产在线网址 | 综合久久久 | 精品欧美激情精品一区 | 九九热在线视频 | 中文字幕一二三 | 91视频88av | 国产成人影院 | 成人av播放 | 在线日韩不卡 | 日韩欧美手机在线 | 久久免费观看一级毛片 | 中文字幕一区二区三区乱码在线 | 91视频免费黄 | 国产欧美视频一区二区三区 | 狠狠干五月天 | 手机av在线| 免费看色| 欧美国产精品 | 精品少妇一区二区三区日产乱码 | 2019天天操 | www狠狠干 | 国产精品久久久久久一区二区三区 | 一区二区三区四区国产 | 久久婷婷色 | 在线看日韩| 羞羞在线视频 | 欧美日产国产成人免费图片 | 久久免费香蕉视频 | 久久99精品视频 | 91五月婷蜜桃综合 | 中文字幕在线观看 | 国产精品一区一区 | 国产婷婷精品av在线 | 午夜视频在线播放 | 亚洲一区国产 |