国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

如何在.NET中實現事務(2)

2024-07-10 13:05:17
字體:
來源:轉載
供稿:網友
并發問題



如果沒有鎖定且多個用戶同時訪問一個數據庫,則當他們的事務同時使用相同的數據時可能會發生問題。并發問題包括: 丟失或覆蓋更新,未確認的相關性(臟讀),不一致的分析(非重復讀),幻像讀。但是如何來避免數據讀取時臟讀等問題出現呢?這里簡單介紹一下:

在sql server數據庫中,提供四種隔離級別:未提交讀、提交讀、可重復讀、可串行讀。這四種隔離級別可以不同程度地保證并發的數據完整性: 

隔離級別
臟 讀
不可重復讀取
幻 像

未提交讀




提交讀




可重復讀




可串行讀





其中第二項為默認,而在.net框架中,同樣支持事務的隔離級別。我們可以通過system.data.isolationlevel 來實現: public virtual isolationlevel isolationlevel {get;}

其成員及相應的含義如下: 



成員名稱
說明


chaos

受 .net framework 精簡版的支持。
無法改寫隔離級別更高的事務中的掛起的更改。
16

readcommitted

受 .net framework 精簡版的支持。
在正在讀取數據時保持共享鎖,以避免臟讀,但是在事務結束之前可以更改數據,從而導致不可重復的讀取或幻像數據。
4096

readuncommitted

受 .net framework 精簡版的支持。
可以進行臟讀,意思是說,不發布共享鎖,也不接受獨占鎖。
256

repeatableread

受 .net framework 精簡版的支持。
在查詢中使用的所有數據上放置鎖,以防止其他用戶更新這些數據。防止不可重復的讀取,但是仍可以有幻像行。
65536

serializable

受 .net framework 精簡版的支持。
在 dataset 上放置范圍鎖,以防止在事務完成之前由其他用戶更新行或向數據集中插入行。
1048576

unspecified

受 .net framework 精簡版的支持。
正在使用與指定隔離級別不同的隔離級別,但是無法確定該級別。
-1




顯而意見,數據庫的四個隔離級別在這里都有映射。在這里,sqltransaction以及oledbtransaction等事務的 isolationlevel 默認值為 readcommitted。那么我們如何使用呢? 可以使用下面方法實現:

trans = cnnorthwind.begintransaction( _
isolationlevel.serializable)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 且末县| 泾川县| 高邮市| 名山县| 疏勒县| 西乌珠穆沁旗| 正蓝旗| 洛宁县| 额敏县| 五原县| 将乐县| 福安市| 山丹县| 长顺县| 文登市| 乌兰察布市| 寿宁县| 香格里拉县| 寿阳县| 榕江县| 鹤峰县| 高碑店市| 南岸区| 刚察县| 南乐县| 青岛市| 新河县| 苍梧县| 大方县| 石林| 武乡县| 张家口市| 进贤县| 翼城县| 中方县| 若羌县| 清水县| 广河县| 育儿| 新巴尔虎右旗| 林周县|