正文html
使用事物是一個比較頭疼的事,業務方法各類穿插,通常使用數據庫事務,那就意味着在調用事務時,須要傳遞數據訪問上下文(新版已經不須要傳遞了,自動識別)數據庫
還有一種解決方案使用TransactionScope,使代碼塊成爲事務,雖然沒有直接使用數據庫事務高效,但方便,容易開發緩存
CRL默認爲此事務框架
什麼都不用傳,真方便分佈式
方法定義post
public bool PackageTrans(TransMethod method, out string error)大數據
在方法體內隨便寫,返回成功或失敗以控制事務spa
//簡化了事務寫法,自動提交回滾 return PackageTrans((out string ex) => { ex = ""; var product = new ProductData(); product.BarCode = "code" + DateTime.Now.Millisecond; product.Number = 10; ProductDataManage.Instance.Add(product); return false; //會回滾 }, out error);
同時也提供了數據庫的事務,不能跨庫code
方法定義htm
public bool PackageTrans2( TransMethod method, out string error)
把操做寫在方法體裏就好了,由框架自動控制數據訪問對象,不能跨庫
//簡化了事務寫法,自動提交回滾 return PackageTrans2((out string ex) => { ex = ""; var product = new ProductData(); product.BarCode = "code" + DateTime.Now.Millisecond; product.Number = 10; ProductDataManage.Instance.Add(product); return false; //會回滾 }, out error);
在面對象開發中,不可能一直帶着數據訪問上下文的尾巴,爲了省事,使用第一種方式吧,簡便無優!