在ASP.NET Core中如何自动启用CAP事务
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,小编给大家分享一下在ASP.NET Core中如何自动启用CAP事务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、发布
千家信息网最后更新 2025年11月14日在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安全错误
数据库的锁怎样保障安全
成都软件开发工作片区在哪
便宜 云服务器
云南网络安全维护行业
湖南软件开发等级Z 岚鸿
塔式服务器的用处
数据库名称错误
腾讯云数据库国信证券
网络安全 事业单位招聘 上海
数据库导出重复项
软件开发前台与前端的区别
战神数据库解释
黑天鹅数据库安全吗
30岁的女的学习软件开发
上海格冠网络技术有限公司官网
易语言选择框数据库
中国知网数据库商合理的利润
it服务和软件开发有什么不同
网络安全教育成果材料
安庆分布式服务器排名
如何查看奇迹服务器地址
共同筑牢网络安全
数据库结构表损坏
数据库数据条数
配置文件如何连接数据库连接
铁通访问电信服务器
全国城市及省级数据库
视频字体软件开发
网络技术中心干嘛的
软件开发年龄有限制
联想服务器虚拟化设计