C# 逻辑问题

a785510512 2015-03-26 02:52:51
如下:

写了个登陆注册,在登陆的时候可以赠送用户积分。在注册的时候也要赠送用户积分。现在我将赠送积分这个操作 单独 写了个方法。在登陆和注册的时候分别调用这个方法。

现在问题来了:注册的时候成功了。但是在调用积分方法这个时候程序错误了。积分就没有添加进去。但是用户已经注册了。。(我要的结果是 注册就要添加积分。如果积分添加失败就不能注册该用户)

为了解决上面这个问题。我在注册的时候将 积分与注册都写进了一个事物里面。 可以解决这个问题。。。如果这样写 我在其他地

方又要加积分操作又不利于扩展了。。。


求各位解答啊!!!
...全文
209 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
smthgdin_020 2015-03-26
  • 打赏
  • 举报
回复
这个需求得用事务来保证数据完整性。
software_artisan 2015-03-26
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
大多数“长业务事务”都跟关系数据库的“事务”不是一回事儿。如果太技术化了、用编程技术的名词儿去硬套在业务逻辑设计上,就会走偏。如果干了好几年开发,还用技术的脑袋去生硬套在业务问题“之上”,就白辛苦这些年了。 “长事务”都是异步的,不阻塞的,甚至是分布的。你需要先把业务流程设计出来,然后无论如何要实现业务要求(而不是为了变成方便而改变业务要求)。这就是业务设计跟编程的最基本的区别。
50%以上的程序员都是这样的。。。。。。技术很高超,但业务是坨翔
a785510512 2015-03-26
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
这确实是一个“逻辑”问题。你对这个问题的处理不合常理,体现了某些程序员“用电脑而非人脑来设计业务流程”的毛病。 让我们先看看生活中实际的场景。假设你去办一个银行卡,如果“办卡就送小礼品”的话,如果当时礼品有问题,请问工作人员会去把你已经办好的卡给“退掉”吗?银行工作人员会尽可能采取多次重试、变通操作、哪怕是你都离开了银行之后她也会给你把礼品给你异步地准备妥当的。既不会丢掉你的礼品,也不会把你的卡给退掉。而实在是“不行”,还会由银行经理亲自联系你来电话道歉。总之不会把卡退掉,也不会对于问题置之不理。 而你为什么只能想到那两种最悲催的错误处理呢?不外乎“编程简单”这一个理由,“数据库事务”这个词儿令人忘乎所以而忽视了用户体验。 如果你站在业务驱动的角度,就知道该如何设计这个流程了。这里根本不用纠结什么“数据库事务”的问题。设计问题还是需要你自己解决,关键是别以电脑的脑袋去设计而要以用户的脑袋去设计业务流程,就好了。
受教了。。其实我这里想要体现的是 怎么设计者这个 程序 的可扩展性。。
xuzuning 2015-03-26
  • 打赏
  • 举报
回复
这有什么可纠结的? 既然你不肯补发注册积分,那就在 赠送积分 失败时删去已入库的该用户就是了
Regan-lin 2015-03-26
  • 打赏
  • 举报
回复
感觉你说的问题很大,程序出错你还能注册成功?这合理么?
  • 打赏
  • 举报
回复
大多数“长业务事务”都跟关系数据库的“事务”不是一回事儿。如果太技术化了、用编程技术的名词儿去硬套在业务逻辑设计上,就会走偏。如果干了好几年开发,还用技术的脑袋去生硬套在业务问题“之上”,就白辛苦这些年了。 “长事务”都是异步的,不阻塞的,甚至是分布的。你需要先把业务流程设计出来,然后无论如何要实现业务要求(而不是为了变成方便而改变业务要求)。这就是业务设计跟编程的最基本的区别。
於黾 2015-03-26
  • 打赏
  • 举报
回复
同上,从需求上就已经不合逻辑了 哪怕是注册完没有给积分,也不是什么大的bug,好比办卡送小礼物,礼品送完了,或者派发礼品的人当时不在,那么可能就拿不到礼物,这影响并不大 不拿礼物就不给卡,这才是大问题
  • 打赏
  • 举报
回复
这确实是一个“逻辑”问题。你对这个问题的处理不合常理,体现了某些程序员“用电脑而非人脑来设计业务流程”的毛病。 让我们先看看生活中实际的场景。假设你去办一个银行卡,如果“办卡就送小礼品”的话,如果当时礼品有问题,请问工作人员会去把你已经办好的卡给“退掉”吗?银行工作人员会尽可能采取多次重试、变通操作、哪怕是你都离开了银行之后她也会给你把礼品给你异步地准备妥当的。既不会丢掉你的礼品,也不会把你的卡给退掉。而实在是“不行”,还会由银行经理亲自联系你来电话道歉。总之不会把卡退掉,也不会对于问题置之不理。 而你为什么只能想到那两种最悲催的错误处理呢?不外乎“编程简单”这一个理由,“数据库事务”这个词儿令人忘乎所以而忽视了用户体验。 如果你站在业务驱动的角度,就知道该如何设计这个流程了。这里根本不用纠结什么“数据库事务”的问题。设计问题还是需要你自己解决,关键是别以电脑的脑袋去设计而要以用户的脑袋去设计业务流程,就好了。
  • 打赏
  • 举报
回复
TransactionScope 百度下这方面的东西,操作关系型数据库可以将多个sql分开写在不同的地方
feiyun0112 2015-03-26
  • 打赏
  • 举报
回复
传sqlconnection和transaction到积分方法,如果为null就新建
a785510512 2015-03-26
  • 打赏
  • 举报
回复

110,538

社区成员

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

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

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