在ASP.NET Core中如何自动启用CAP事务
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下在ASP.NET Core中如何自动启用CAP事务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、发布
千家信息网最后更新 2025年01月20日在ASP.NET Core中如何自动启用CAP事务
小编给大家分享一下在ASP.NET Core中如何自动启用CAP事务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、发布端事务
由于大部分人都是在 Web
中使用,所以可以通过使用 ASP.NET Core
过滤器的方式进行,当然也可以通过中间件,原理是一致的。
1、创建一个 TypeFilter
,命名为 CapTransactionFilterAttribute
public class CapTransactionFilterAttribute : TypeFilterAttribute{ public CapTransactionFilterAttribute() : base(typeof(TransactionActionFilter)) { } public class TransactionActionFilter : IActionFilter { private IDbContextTransaction _transaction; public void OnActionExecuting(ActionExecutingContext context) { var dbContext = context.HttpContext.RequestServices.GetRequiredService(); var capPublisher = context.HttpContext.RequestServices.GetService (); _transaction = dbContext.Database.BeginTransaction(capPublisher); } public void OnActionExecuted(ActionExecutedContext context) { if (context.Exception == null) { _transaction.Commit(); } else { _transaction.Rollback(); } _transaction?.Dispose(); } }}
2、使用方式,在需要进行事务控制的 Action
上添加 [TypeFilter(typeof(CapTransactionFilterAttribute
))] 即可生效。
[Route("~/ef/trans-filter")][TypeFilter(typeof(CapTransactionFilterAttribute))]public IActionResult EntityFrameworkWithTransactionFilter( [FromServices] AppDbContext dbContext){ dbContext.Persons.Add(new Person() { Name = "ef.transaction" }); _capBus.Publish("sample.rabbitmq.mysql", DateTime.Now); dbContext.SaveChanges(); return Ok();}
二、消费端事务
消费端自动事务主要利用 CAP
提供的过滤器来进行开启,需要 CAP
版本大于 5.1.0。
1、创建一个 CAP 过滤器
public class MyCapFilter : SubscribeFilter{ private readonly AppDbContext _dbContext; private IDbContextTransaction _transaction; public MyCapFilter(AppDbContext dbContext) { _dbContext = dbContext; } public override void OnSubscribeExecuting(ExecutingContext context) { _transaction = _dbContext.Database.BeginTransaction(); } public override void OnSubscribeExecuted(ExecutedContext context) { _transaction.Commit(); } public override void OnSubscribeException(DotNetCore.CAP.Filter.ExceptionContext context) { _transaction.Rollback(); }}
2、配置过滤器
services.AddCap(opt =>{ // ***}.AddSubscribeFilter();
以上是"在ASP.NET Core中如何自动启用CAP事务"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
事务
过滤器
篇文章
内容
可以通过
大部分
方式
消费
一致
不怎么
中间件
原理
是在
更多
版本
知识
行业
资讯
资讯频道
频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
acfun 服务器
广州新华互联网科技学校学费贵吗
数据库导入脚本
超级小旋风和数据库怎么连接
网络技术试卷选择题
珠海金融软件开发费用是多少
计算机网络技术招色弱
内部网络技术要求
四川浪潮服务器虚拟化价格
广联达山东数据库
服务器维修费
国华通信网络技术
营销软件开发咨询报价
cdn 网络安全防护方案
服务器架设指南
监所实战平台服务器建设
平台的软件开发
ubuntu选择服务器
湖州高职计算机网络技术好吗
海南定制化国产服务器采购
腾讯云服务器校园
思科服务器DNS配置
中电52所软件开发面试问题
服务器副本积分兑换更新
手机服务器50g内存
龙岗区服务器机柜批发
海淀区正规软件开发诚信服务
网络安全文字内容怎么写
复制数据库参数设置长度
科技互联网的创新