dal基於ado.net的話,那麼可以為你的dal增加乙個返回 dbtransaction 物件的方法,然後使用類似這樣的工廠方法
c# code?
1
2
3
4
5
6
7
using
(dbtransaction tran=createmytransaction())
總之你的所謂dal方法要作出修改,它如果需要訪問資料庫,那麼從傳入的tran中去取得 connection 屬性,並呼叫 connection 的 createcommand 方法來建立 command,來運算元據庫。
事務只在同一執行緒的同一資料庫連線下有效,
而另一方面,每乙個具體的業務,會包括大量的實體類的增刪改查處理,
如果由dal控制事務,每一次都要頻繁的開關資料庫,有可能會很浪費資源。
事務的目的是回滾,採用dal控制的方式無法進行回滾。
因此,事務的發起與結束只能有業務層控制,而不能由dal控制,這就決定了資料庫的開關也只能由bll說了算。
關於資料庫事務
三種錯誤 1.髒讀 可以讀取為提交的事務的資料,若事務回滾,則讀取的資料失效 2.不可重複讀 乙個事務中有兩次讀取同一行資料,兩次讀取之間另乙個事務修改了這一行且提交,則兩次讀取內容不同 3.幻讀 乙個事務在執行兩次相同的範圍查詢時,另乙個事務新增了一行資料,導致兩次範圍查詢記錄不同 四中隔離級別 ...
資料庫事務操作
1 先看看什麼是事務吧?對資料庫的每次操作都可以看做是事務。事務 transaction 是資料庫管理系統的執行單位,可以是乙個資料庫操作 如select操作 或者是一組操作序列。事務的特性 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durabi...
資料庫事務操作
事務 當執行一組dml操作時,為了確保資料的完整性和一致性,避免資料庫產生錯誤資料,就需要通過事務 transaction 使該組dml操作同時成功或失敗 示例 create table account id char 36 primary key,card id varchar 20 unique...