.net 的事务交叉使用

一天到晚游泳的鱼2016 2012-09-21 01:23:33
我现在逻辑里面有两个函数,这两个函数里面都用了。net的事务
函数A里有自己的事务,函数B里有自己的事务。
我现在执行B函数,但是B函数里面的逻辑要调用A函数。

这样事务会出问题吗啊。现在从数据的记录来看,执行B函数后,有好多重复记录。

这些记录都是从函数A执行添加的,还有A中操作更新的表有些数据也没进行更新。
...全文
152 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lei00529 2012-09-21
  • 打赏
  • 举报
回复
我也遇到过你这种问题,我使用过两种解决方法
1:在A方法里,返回一个是否执行成功,如果B函数在调用A时发现执行不成功,则回滚自身.
2:在A方法里如果出错使用 throw new ArgumentException("错误消息");程序会自动中止,B就会自动回滚。我所说的出错,不只是程序上的,还包括业务逻辑上的。


"还有A中操作更新的表有些数据也没进行更新。"这个应该跟多重事务没什么关系,应该是你A方法里自身的问题。

  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
你这个是多个事务合成一个事务
事务不是应该有它的独立性与完整性吗?
还是不要在事务中包含另一个事务
[/Quote]

我也知道,但是A的逻辑很多的,这些逻辑不可能分开,而我要把A的这些逻辑复制到B中那就更乱了,那倒是可以放到一个B中的事务了。

但是代码读起来费死劲了。函数A的逻辑已经400多行了,设计到好多表的操作,及逻辑判断。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
事务应该是对一连串的数据操作语句进行的保护,如果发生错误,可以回滚
你的应该是两个独立的事务,无论怎样,如果语句能正常运行,那么数据入库时,就应该增加重复判断,而不应该是事务的问题.
[/Quote]

我的重复记录,是指执行一次的时候插入多条记录,而不是执行多次插入 重复记录
凤凰涅檠 2012-09-21
  • 打赏
  • 举报
回复
你这个是多个事务合成一个事务
事务不是应该有它的独立性与完整性吗?
还是不要在事务中包含另一个事务
  • 打赏
  • 举报
回复
1.我的大部分逻辑执行都是只调用A就可以完成,A中是自己独立完整的事务。

2.特殊情况,需要执行B函数,但是B函数一部分操作,需要执行A才可以完成。

1和2的处理时分开的,不是一起的。

我本地测试也没那么多用户操作,执行没什么问题。

但是线上,2的情况,B中调用A插入数据好多重复。

我这么实用事务可以吗?

还是像akanglucky说的,我必须把B的事务作为参数传到A中

那样A的事务逻辑也得改。
  • 打赏
  • 举报
回复
那该怎么做
akanglucky 2012-09-21
  • 打赏
  • 举报
回复
两个事务最好放在一起进行处理,不然会出问题的。函数B调用A,则将事务最为参数传个A。这样就把事务关联起来了!希望对你有帮助!
  • 打赏
  • 举报
回复
事务应该是对一连串的数据操作语句进行的保护,如果发生错误,可以回滚
你的应该是两个独立的事务,无论怎样,如果语句能正常运行,那么数据入库时,就应该增加重复判断,而不应该是事务的问题.
zg_heng 2012-09-21
  • 打赏
  • 举报
回复
你的那两个函数不混乱吗?
1、在你的逻辑里调用了函数A、B
2、函数B里还调用了A,
那么这样的话函数A就执行了两次,所以导致你有好多重复的记录,你应该把那两个函数中的事物之间的逻辑再好好理一下。
winner2050 2012-09-21
  • 打赏
  • 举报
回复
这么作是用来敷衍了事的。

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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