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.mzph.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…

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…

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…

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. …

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;检测硬件状态对于保障整…

Using Python with Oracle

2019独角兽企业重金招聘Python工程师标准>>> Using Python with Oracle This page discusses using Python with Oracle. The page is based on the cx_oracle Python extension module. It was developed on a VM running Oracle Enterprise Linux 6U4 runnng Orac…

小米oj 反向位整数(简单位运算)

反向位整数 序号&#xff1a;#30难度&#xff1a;一般时间限制&#xff1a;1000ms内存限制&#xff1a;10M 描述 输入32位无符号整数&#xff0c;输出它的反向位。 例&#xff0c;输入4626149&#xff08;以二进制表示为00000000010001101001011011100101&#xff09;&#xff…

如何在Microsoft Word中插入签名

Adding your signature to a Microsoft Word document is the ultimate way to personalize it as your own, especially for documents like letters or contracts. If you want to add a signature to a Word document, here’s how. 将签名添加到Microsoft Word文档是将其个…

jdk 1结尾和2结尾_“与巢一起工作”的结尾对您意味着什么

jdk 1结尾和2结尾korisbo/Shutterstock科里斯博/ ShutterstockGoogle announced the end of “Works With Nest” at Google I/O 2019. Many companies, from IFTTT to Philips Hue, use Works With Nest to automate your smarthome. Those automations will break soon. Goog…

linux 桌面显示视频播放器,Ubuntu 13.10开启媒体播放器VLC桌面通知的步骤

VLC是一款多功能的媒体播放器&#xff0c;支持众多音频及视频格式&#xff0c;能够适用于Ubuntu等系统&#xff0c;而VLC播放器有桌面通知功能&#xff0c;需要手动开启&#xff0c;下面小编就以Ubuntu 13.10为例&#xff0c;给大家详细介绍下Ubuntu 13.10开启VLC桌面通知的步骤…

独家 | 蚂蚁金服TRaaS技术风险防控平台解密

小蚂蚁说&#xff1a; 在金融行业&#xff0c;风险防控能力的重要性不言而喻。而蚂蚁金服可实现高达99.999%的异地多活容灾&#xff0c;千亿级资金秒级实时核对“账、证、实”等能力也让业界有目共睹。 今年位于杭州的蚂蚁金服ATEC科技大会上&#xff0c;蚂蚁金服正式推出技术风…

谷歌表格_如何使用宏自动执行Google表格

谷歌表格Google Sheets lets you automate repetitive tasks with macros, and you can then bind them to keyboard shortcuts to execute them quickly. They work using Google Apps Script to capture your actions for later use. Google表格可以让您使用宏自动执行重复性…

阿里云弹性高性能计算E-HPC强势来袭,全新打造一站式云超算

为什么80%的码农都做不了架构师&#xff1f;>>> 摘要&#xff1a; 如今&#xff0c;高性能计算已在不知不觉中渗透到人类生活的方方面面。从材料科学到石油勘探、金融市场、应急管理、医学和互联网等领域&#xff0c;高性能计算无一不大显身手&#xff0c;帮助快速…

深度优先搜索(DFS)----------------Tju_Oj_3517The longest athletic track

这个题主要考察对树的操作&#xff0c;主要思想是DFS或者BFS&#xff0c;其次是找树的直径方法&#xff08;既要运用两次BFS/DFS&#xff09;&#xff0c;最后作为小白&#xff0c;还练习了vector的操作。 DFS框架伪码: bool DSF(Node oneTreePoint ){ //传入的结点和其他有效…

word中图片超出页边距_如何在Word中更改页边距

word中图片超出页边距Word documents open with one-inch margins by default. You can adjust the page margins by choosing one of Word’s predefined options, or you can specify the exact height and width of the margins yourself. Here’s how. 默认情况下&#xff…