ASP.net MVC 多个action之间如何实现事务回滚?

dashanyelang 2017-11-17 05:37:09
ef在同一个controller中的多个action操作同一数据库和不同表,但要在最后一个action的表提交后,才可以提交,若最后一个表没有填写,则回滚,如何操作?
...全文
313 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
多个Action?那就是涉及多次http请求了,都是不同的请求了,还怎么回滚?这还是事务?
小灰灰城堡 2018-12-26
  • 打赏
  • 举报
回复
在MVC里有个隐藏的事务就是SaveChanges()这个方法,你可以在操作前几个实例,到最后一块保存到数据库 public ActionResult Index() { Model1Container model1 = new Model1Container();//连接数据库 userInfo user = new userInfo(); user.userName = "小白"; user.userPwd = "123456"; userAuthority authority = new userAuthority() { userInfo = user };//只能在一对多中使用即userInfo是一,userAuthority是多 model1.userInfo.Add(user);//贴上添加标签 model1.userAuthority.Add(authority);//贴上添加标签 if (model1.SaveChanges() > 0)//真正保存到数据库 { return "添加成功"; } else { return "添加失败"; } return View(); }
正怒月神 版主 2017-11-20
  • 打赏
  • 举报
回复
多个action分别访问后,在最后的action实现回滚? 这个有难度啊。 不能开一个新的action,集合之前的集合,然后整理到一起实现回滚吗? 如果实在不行,那估计只能通过 dbcontext的整体包裹起来,在处理逻辑层回滚。 我个人感觉多个action要处理回滚很麻烦,而且也不是一个正常的逻辑范畴。 因为既然是多个action,那么代表是单独的多个逻辑任务。不排除有些只要访问其中的个别action。 如果只有最后一个会起到回滚的作用。那么就很难应付上面只访问个别action的问题了。
BrucesLong 2017-11-20
  • 打赏
  • 举报
回复
"但要在最后一个action的表提交后,才可以提交,若最后一个表没有填写,则回滚,如何操作?" --------------------------------------------------- 其实这个和多个action没有关系,因为你所有的数据操作都是在最后一个action才提交,那么事务控制就简单了, 你把前面所有的action的数据都存储起来,比如:放在内存,session都可以,然后在最后一个action提交时,做相关数据的事务提交(insert,update),或者回滚操作。
丰云 2017-11-20
  • 打赏
  • 举报
回复
web系统做回滚是个难题,需要完整的解决方案,一不小心会搞错的, 用session缓存每一步的操作和数据,最后一步处理也行, 数据结构提供跨事件的事务回滚也行, 总之要考虑清楚。
ourhouzi 2017-11-20
  • 打赏
  • 举报
回复
你把前面几个action 的数据存储起来 最后一个action 一起处理
江湖评谈 2017-11-20
  • 打赏
  • 举报
回复
回滚是回不了了 你可以action筛选器做一些事情 还是可以的
You冷 2017-11-20
  • 打赏
  • 举报
回复
具体怎么操作我不知道,很少自己去写事务回滚
You冷 2017-11-20
  • 打赏
  • 举报
回复
你把提交的代码放在回滚的语句里应该就可以了
  • 打赏
  • 举报
回复
1. 感觉lz的思维很独特 2. 我感觉没必要纠结于这么复杂的实现方式 2.1 可以通过逻辑上控制数据的状态来达到目的,比如前几个表单都提交到数据库了,但是数据状态是【逻辑删除】(比方)的状态,直到最后一步提交成功则前面提交过的关联的数据都改成正常状态(最后一步提交数据的操作和【修改前几条数据状态】的操作 可以封装在同一个事务里面,如果事务执行失败回滚,那么前面的数据仍旧是逻辑删除状态,顶多是冗余在哪里)。 2.2 另外也可以通过前端处理好数据(比如放在cookie里面),最终统一提交到服务端,服务端处理的时候 放在一个事务来处理

62,054

社区成员

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

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

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

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