CSLA中業務層事務的實現

來源:互聯網
上載者:User

在企業級開發中,為保持業務資料的一致性,事務是經常需要用到的。

在CSLA架構中,有文章說只要給方法加上標籤([Transactional(TransactionalTypes.TransactionScope)]),就可以實現。經過我的大量實踐,這個標籤沒有作用。

我們最初使用的是SqlTransaction,將事務作為參數在方法之間傳遞,這樣做會產生兩個問題:

1.業務方法間的調用發生在資料訪問層DAO,這樣必然會將一些商務邏輯也寫在資料訪問層,商務邏輯層將失去應有的作用。

2.事務很難控制,代碼量大,在調用其它業務方法時,不一定會有事務的參數。

解決辦法是在商務邏輯層使用 TransactionScope(經量級事務),方法如下:

1.在工程中引用System.Transactions.dll

2.在類檔案中引入命名空間using System.Transactions;

3.重寫CSLA的方法,代碼如下:

ResumeScore類的Save方法 1         public override ResumeScore Save()
 2         {
 3             ResumeScore resumeScore = null;
 4             using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
 5             {
 6                 resumeScore = base.Save();
 7                 ts.Complete();
 8             }
 9             return resumeScore;
10         }Resume類的Save方法 1         public override Resume Save()
 2         {
 3             Resume resume = null;
 4             using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
 5             {
 6                 resume = base.Save();
 7                 if (this.ResumeScore != null)
 8                 {
 9                     this.ResumeScore.Save();
10                 }
11                 ts.Complete();
12             }
13             return resume;
14         }

在上述代碼中,Resume的Save方法中調用ResumeScore的Save方法,這樣業務處理就寫在了業務層,並且實現了事務的處理。

說明, TransactionScope的說明與用法,請參考:http://www.cnblogs.com/zhangpengshou/archive/2009/07/20/1527269.html

注意:需要啟動分散式交易及開啟網路訪問,可以查閱其它資料,如http://www.cnblogs.com/dengsu888666/archive/2007/04/02/696555.html

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.