DDD~領域事件中使用分布式事務

對于一個聚合來說,它可能會被附加很多事件,這里我們叫它領域事務,因為一個聚會我們可以把它理解成一個領域,一個業務。對于領域事件不清楚的同學可以看看我的這篇文章《DDD~領域事件與事件總線》,里面有詳細的說明,今天主要說一下領域里的事務,即領域事件的數據處理和主邏輯里的數據處理在同一事務里完成。

知識準備

SQL2005環境使用TransactionScopeNoMsdtc事務,它是占占開發的,原理是將一批操作包裹到一個SqlConnection里,由開發者維護接連的關閉,這也是使用時要特別注意的地方,因為如果不關閉連接,SQL鏈接池會益出。

SQL2008環境使用微軟自己的分布式事務實現TransactionScope,它對于同一個上下文來說,是不會被提升為分布式事務的,這一點對SQL2005要強很多。

代碼實踐

  /// <summary>/// 添加WebSystem表時,所需要的事件對象/// </summary>
    [Serializable]public class WebSystemCreateEvent : EventBase{/// <summary>/// 數據上下文,它與架構無關,可以是Linq2Sql,EF,ADO.NET/// </summary>public IUnitOfWork UnitOfWork { get; set; }/// <summary>/// 對象主鍵/// </summary>public int ID { get; set; }}
      [HttpPost]public ActionResult WebSystem(FormCollection form){//訂閱領域事件EventBus.Instance.Subscribe<WebSystemCreateEvent>(i =>{var entity1 = new DbContextRepository<WebSystem>(i.UnitOfWork).Find(i.ID);entity1.WebSystemName = entity1.WebSystemName + "更新了";new DbContextRepository<WebSystem>(i.UnitOfWork).Update(entity1);});IUnitOfWork UnitOfWork = new backgroundEntities1();var db = new DbContextRepository<WebSystem>(UnitOfWork);using (TransactionScope trans = new TransactionScope()){var entity = new WebSystem{Info = form["Info"],Status = Convert.ToInt32(form["Status"]),WebSystemName = form["WebSystemName"]};db.Insert(entity);//發布領域事務EventBus.Instance.Publish(new WebSystemCreateEvent{ID = entity.WebSystemID,UnitOfWork = UnitOfWork,});trans.Complete();}return RedirectToAction("WebSystemList");

SQL截圖

TransactionScopeNoMsdtc截圖

TransactionScope截圖

本地WWW網站服務器的MSDTC為禁用狀態

本文轉自博客園張占嶺(倉儲大叔)的博客,原文鏈接:DDD~領域事件中使用分布式事務,如需轉載請自行聯系原博主。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278999.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在PowerPoint中制作打字機或命令行動畫

Adding quirky animations to your Microsoft PowerPoint presentation gives your slideshow a little extra life. Not only will adding a typewriter or command line animation entertain your audience, but it will also keep them focused on the text. 在您的Microsof…

oracle中spool卸數,數據卸載--spool的使用

&#xfeff;&#xfeff;引言在項目中&#xff0c;我們經常會遇到數據的卸載、裝載需求。卸載就是需要將數據從數據庫中導入到文本文件中的需求&#xff0c;這樣的方法有很多&#xff0c;比較常用的就是spool命令。裝載就是需要將數據從文本文件中導入到數據庫中。方法也有很多…

Objective-C中的@property

1.property是什么 Property是聲明屬性的語法&#xff0c;它可以快速方便的為實例變量創建存取器&#xff0c;并允許我們通過點語法使用存取器。 存取器&#xff08;accessor&#xff09;&#xff1a;指用于獲取和設置實例變量的方法。用于獲取實例變量值的存取器是getter&#…

Linux基礎命令---findfs

findfs 查找指定卷標或者UUID的文件系統對應的設備文件。findfs將搜索系統中的磁盤&#xff0c;尋找具有標簽匹配標簽或與UUID相等的文件系統。如果找到文件系統&#xff0c;文件系統的設備名稱將打印在stdout上。 此命令的適用范圍&#xff1a;RedHat、RHEL、Ubuntu、CentOS、…

canvas 平滑運動_什么是電視上的運動平滑?人們為什么討厭它?

canvas 平滑運動Willy Barton/Shutterstock.com威利巴頓/Shutterstock.comIf you’ve just bought a new TV, you might be wondering why everything you watch feels eerily sped up and smooth, like you’re watching a live broadcast all the time. You’re not imaginin…

linux guard什么進程,使用linux系統性能監控工具KSysguard監控遠端主機介紹

KDE System Guard默認的窗口前端圖形界面使用傳感器(sensors)獲得要顯示的信息。傳感器返回的可以是一個簡單的數值或更復雜的信息如表格。針對不同的信息類型都提供了一個或多個顯示界面。這些顯示界面被組織在多個工作表中&#xff0c;工作表可以獨立存儲和加載。KSysguard主…

macbook充電_如何判斷MacBook是否正在充電

macbook充電2p2play / Shutterstock2p2play / ShutterstockForgetting to charge your MacBook properly overnight can leave you with a headache in the morning. And if you’re troubleshooting a broken MacBook, checking if it’s able to charge is one way to rule o…

mysql記錄

當沒有用EXISTS引入子查詢時&#xff0c;在選擇列表中只能指定一個表達式轉載于:https://www.cnblogs.com/niuben/p/9920741.html

PIL.Image convert to numpy array

當使用PIL.Image讀取圖像時&#xff0c;如果直接使用numpy.array()轉換會出現錯誤&#xff1a; lst list() for file_name in os.listdir(dir_image):image PIL.Image.open(file_name)lst.append(image) arr numpy.array(lst) 此時&#xff0c;上述最后一行在執行時會出現錯…

NFC服務器在Linux,linux 安裝 libnfc ,打開串口PN532

硬件準備&#xff1a;USB轉串口4針杜邦線PN532模塊IC卡一張(比如門禁卡&#xff0c;飯卡等)軟件準備&#xff1a;Ubuntu 物理機一臺能夠訪問互聯網1&#xff0c;將PN532與USB轉串口連接好,放一張IC卡靠近PN532模塊2&#xff0c;安裝libnfc&#xff1a;chunliubuntu:~$ sudo apt…

chrome同步_如何在Chrome中打開或關閉同步

chrome同步Google Chrome lets you sync up your Google account to your browser across any device. When enabled, bookmarks, history, passwords, extensions, and themes—among many other settings—sync from your Google account, creating a seamless experience no…

sublime text3搭建react native

Sublime Text 3 搭建React.js開發環境 Sublime有很強的自定義功能&#xff0c;插件庫很龐大&#xff0c;針對新語言插件更新很快&#xff0c;配合使用可以快速搭建適配語言的開發環境。 1. babel-sublime 支持ES6&#xff0c; React.js, jsx代碼高亮&#xff0c;對 JavaScript,…

linux系統輸入指令,詳解linux系統輸入輸出管理和vim的常用功能

####系統中輸入輸出的管理####1.理解系統的輸入輸出重定向輸入重定向是指把文件導入到命令中&#xff0c;而輸出重定向則是把原本要輸出到屏幕的數據信息寫入到指定文件中。2.管理輸入輸出的符號##輸出重定向> ##重定向正確輸2> ##重定向錯誤輸出&> …

Deep Learning(深度學習)學習筆記整理(二)

本文整理了網上幾位大牛的博客&#xff0c;詳細地講解了CNN的基礎結構與核心思想&#xff0c;歡迎交流 [1]Deep learning簡介 [2]Deep Learning訓練過程 [3]Deep Learning模型之&#xff1a;CNN卷積神經網絡推導和實現 [4]Deep Learning模型之&#xff1a;CNN的反向求導及練習 …

百度新聞 谷歌新聞_每日新聞摘要:到目前為止,Google I / O提供的最佳信息

百度新聞 谷歌新聞Google’s yearly developer conference started yesterday, and the keynote was chock-full of announcements, demos, and some utterly mind-blowing tech. From Assistant to Android, here’s some of the best stuff to come out of I/O 2019 so far. …

u盤裝服務器linux軟件,服務器維護給您的U盤安裝linux

服務器維護給您的U盤安裝linux如何做好服務器維護?北京艾銻無限科技與你談談IT人員必須知道的服務器維護信息服務器維護小知識因為現在linux普及率實在不高&#xff0c;很多地方都沒有安裝&#xff0c;包括高校機房。為了自身方便和宣傳推廣linux&#xff0c;決定在U盤上安裝一…

幾個WMS的問題處理

采購訂單沒有生成上傳訂單號pkg_inpurchase_task.p_rk_sc_rkd_zc iv_yzid ----- ZDA iv_djbh ---- KPD00014712 銷售訂單下傳下去后直接轉歷史表 select * from INTERFACE_OUT_SALE_M t where djbh like %XSGYMA00220297%日志表查詢結果ORA-01400: 無法將 NULL 插入 ("WMS…

yyblog2.0 數據庫開發規范

一、基礎規范 &#xff08;1&#xff09;必須使用InnoDB存儲引擎 解讀&#xff1a;支持事務、行級鎖、并發性能更好、CPU及內存緩存頁優化使得資源利用率更高 &#xff08;2&#xff09;表字符集默認使用utf8&#xff0c;必要時候使用utf8mb4 解讀&#xff1a;1、通用&#xff…

word2016 語法檢查_如何改進Microsoft Word的語法檢查器

word2016 語法檢查Microsoft Word comes with a powerful grammar checker, but many of its advanced grammar detection features are disabled by default. Grammarly is popular, but you don’t need it to add grammar checking to Word. Word itself contains a free al…

linux服務器硬件監控,Linux服務器實時監控加載硬件信息

Linux服務器監控之實時監控加載硬件信息Linux負有盛名的特點之一是其非凡的穩定性。然而&#xff0c;如果您的硬件有缺陷或配置不正確&#xff0c;即使是世界上最穩定的操作系統也不會對您有什么幫助。計算機系統是由軟件系統硬件系統組成的&#xff0c;檢測硬件狀態對于保障整…