业务层事务如何设计

jqncc 2013-09-12 04:12:11
业务层的一个方法包含多个数据对象的更新或者删除操作,而这些操作都是应该在一个事务里的,但我们的数据持久层通常又是各自开启和关闭事务的,这个应该怎么解决(不使用框架)


public void delete(object entity)
{
ISession session = GetCurrentSession();
using (ITransaction tx = session.BeginTransaction())
{
try
{
session.Delete(entity);
tx.Commit();
}catch (HibernateException)
{
tx.Rollback();
throw;
}
}
}

这个是使用nhibernate的删除方法,如果业务层方法调用了多次这个方法,如何组成一个事务
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
conanhhy 2013-09-13
  • 打赏
  • 举报
回复
使用TransactionScope就可以解决,LZ

TransactionScope trans = null;
try {
    trans = new TransactionScope();
    // 逻辑段
    trans.Complete();
} catch(Exception ex) {
    throw ex;
} finally {
    if (trans != null) {
        trans.Dispose();
    }
}
jqncc 2013-09-13
  • 打赏
  • 举报
回复
引用 1 楼 intraweb 的回复:
用TransactionScope把它们包裹起来就可以了,你搜索一下TransactionScope用法就知道了。 不过要注意,如果你的连接是两个不同的数据库,就会引发分布式事务。
这个我知道,但是如果是自己设计呢?
游戏人间 2013-09-13
  • 打赏
  • 举报
回复
多个数据对象的更新或者删除操作,都多写一个带事务的重载. 调用时传一个事务就可以了.
szjay 2013-09-12
  • 打赏
  • 举报
回复
用TransactionScope把它们包裹起来就可以了,你搜索一下TransactionScope用法就知道了。 不过要注意,如果你的连接是两个不同的数据库,就会引发分布式事务。
对于大中台来讲,现在并没有十分严格的定义,每个企业对其的理解都是不同的,有的在技术上使用大中台模式,有的在业务上使用大中台模式,有的将两者相结合。“大中台,小前台”的机制最初阿里提出的时候,主要应用于O2O线上线下协同、电商等场景,对于电商来说,市场环境是瞬息万变的,而前台是主要的一线业务,这时就需要一个强大的技术中台提供快速设计方法和系统性后端服务,去应对市场变化,灵活快速的做出应对策略。 技术中台从技术角度出发,数据中台从业务数据角度出发,业务中台站在企业全局角度出发,从整体战略、业务支撑、连接用户、业务创新等方面进行统筹规划,由基础中台、技术中台、数据中台L合支撑来建设业务中台。 本套中台案例基于真实工业界业务讲解,将多种经过工业界验证的成熟技术解决方案呈现给大家,本套课程拒绝枯燥的理论,全程代码实操,通过项目驱动的方式,让大家能够真实体验中台工业界开发过程,帮助大家建立中台思维,学习本套课程全部内容你完全可以自主开发一套高性能高可用高扩展的中台系统。本套案例集后端+前台+测试+运维一体,多方位的带你熟悉全过程。本课程将带大家实现一个真实的工业界中台项目,该项目是基于真实的知名互联网企业项目讲解,本课程将分为4个阶段: 第一阶段:会实现中台系统的大部分核心服务,包括:会员中心,商品中心,交易中心,商家中心,支付中心,友凡商城等等。 第二阶段:进一步完善中台系统的核心服务以及优化,包括:营销中心,搜索中心,店铺中心,缓存优化,数据库优化等等。 第三阶段:进一步优化以及完善产品服务,包括:前台系统,中台系统,友凡商城 友凡生鲜,友凡超市等等。 第四阶段:项目收尾阶段以及运维阶段,包括:压力测试,系统维护,系统部署,虚拟化方案,测试方案等等。 本课程包含的技术: IDEA集成开发工具  SpringBoot 2.0.8.RELEASE SpringCloud Finchley.SR2 Thymeleaf(模板引擎技术)  支付宝支付 MyCat、MySQL、Druid  持续集成解决方案(Jenkins) 认证解决方案(JWT) 网关解决方案(Zuul) 负载均衡解决方案(Ribbon) 分布式事务+多线程+事件驱动 MyBatis+Redis+Quartz Ehcache+Hystrix Nginx(Web服务器) Restful AOP技术 性能压力测试Jemter  VUE+jQuery+Ajax+NodeJS VUE+Element-UI 容器部署Docker Kubertenes Lucene、ElasticSearch(搜索) 设计模式、RabbitMQ Swagger2 文档生成工具 人工智能(RNN、LSTM)多语言开发(Python、Django)课程亮点: 1.与企业无缝对接、工业界真实业务场景 2.集后端+前台+测试+运维一体,多面学习技术链 3.多语言协调开发,熟悉语言应用场景4.支持项目快速迭代和开发 5.引入人工智能智能客服系统 6.使用微服务技术栈+前后端分离构建项目 7.引入全新的设计理念 8.全链路性能压力测试 9.分布式事务解决方案 10.事件驱动设计解决方案 11.多线程技术+设计模式的实战应用 12.分布式架构下实现分布式定时调度 13.集成MyBatis实现多数据源路由实战 14.集成SpringCloud实现统一整合方案 15 Kubernetes+Docker容器化部署和管理 16.大型系统分布式部署方案 17.高性能系统(支撑海量数据) 18.高并发下的服务降级、限流实战 19.实现高并发请求和实现高可用架构解决方案 20.全程代码实操,提供全部代码和资料 21.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧