国产探花免费观看_亚洲丰满少妇自慰呻吟_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)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东兰县| 土默特右旗| 邵阳市| 开平市| 会泽县| 台州市| 信丰县| 原平市| 青神县| 阜新| 鄂尔多斯市| 苍山县| 铜鼓县| 丽水市| 陇西县| 江永县| 会理县| 阳西县| 苏尼特右旗| 山东| 连城县| 财经| 顺平县| 衡阳市| 灵台县| 瑞安市| 名山县| 广东省| 都昌县| 朝阳县| 吉林省| 长子县| 永新县| 鸡西市| 卓资县| 仪陇县| 平泉县| 德安县| 嘉定区| 句容市| 德州市|