新足迹

 找回密码
 注册

精华好帖回顾

· 乘游轮经历点滴 (2011-1-23) aicjt · 新足迹厨艺大展示 元月:主料-豆腐~~客家酿豆腐~~ (2009-1-1) 紫雪花
· 国内和日本的美食报道(现场实录)——604 美丽的回味,唐朝未来店。 (2010-3-29) 老陶 · 海狸DIY之 – 4块钱自制worm farm (技术帖) (2013-6-3) 勤劳的海狸
Advertisement
Advertisement
查看: 1695|回复: 13

持分请教 .Net 开发代码问题 [复制链接]

发表于 2020-9-25 14:27 |显示全部楼层
此文章由 方言 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 方言 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我尽量把问题问的简单些

最近的项目里的, 当一个用户付款的时候, 会有一个payment
这个payment 会向SQL 插入一个Receipt记录和一个Invoice 记录, 由InsertReceipt() 和InsertInvoice() 两个函数完成

请问如何做, 才能保证 Receipt和Invoice 要么都成功, 要么都失败?
Advertisement
Advertisement

发表于 2020-9-25 14:30 |显示全部楼层
此文章由 happysee 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 happysee 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你可以搜索一下 TransactionScope

评分

参与人数 1积分 +2 收起 理由
方言 + 2 感谢分享

查看全部评分

发表于 2020-9-25 14:41 |显示全部楼层
此文章由 方言 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 方言 所有!转贴必须注明作者、出处和本声明,并保持内容完整
happysee 发表于 2020-9-25 13:30
你可以搜索一下 TransactionScope

那这样 Receipt 和Invoice 就必须在一个函数中了, 我现在是两个函数, 分别插入 Receipt 和 Invoice

发表于 2020-9-25 14:41 |显示全部楼层
此文章由 chongchongworks 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 chongchongworks 所有!转贴必须注明作者、出处和本声明,并保持内容完整
happysee 发表于 2020-9-25 13:30
你可以搜索一下 TransactionScope

同意

或者在sql 里面同时做两个操作, 但是也是要有transaction 包起来

评分

参与人数 1积分 +2 收起 理由
方言 + 2 感谢分享

查看全部评分

还没准备好广告链接

发表于 2020-9-25 14:45 |显示全部楼层
此文章由 happysee 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 happysee 所有!转贴必须注明作者、出处和本声明,并保持内容完整
方言 发表于 2020-9-25 13:41
那这样 Receipt 和Invoice 就必须在一个函数中了, 我现在是两个函数, 分别插入 Receipt 和 Invoice ...

不需要在一个函数里,你可以在TransactionScope里面调用你的两个函数

评分

参与人数 1积分 +3 收起 理由
方言 + 3 感谢分享

查看全部评分

发表于 2020-9-25 14:53 来自手机 |显示全部楼层
此文章由 frank_au 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 frank_au 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可以在sql里弄个stored procedure

评分

参与人数 1积分 +2 收起 理由
方言 + 2 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2020-9-25 14:57 |显示全部楼层
此文章由 fly02 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fly02 所有!转贴必须注明作者、出处和本声明,并保持内容完整
happysee 发表于 2020-9-25 13:45
不需要在一个函数里,你可以在TransactionScope里面调用你的两个函数

老司机

发表于 2020-9-25 15:03 |显示全部楼层
此文章由 方言 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 方言 所有!转贴必须注明作者、出处和本声明,并保持内容完整
happysee 发表于 2020-9-25 13:45
不需要在一个函数里,你可以在TransactionScope里面调用你的两个函数

了解了, 谢谢!

发表于 2020-9-25 15:14 |显示全部楼层
此文章由 git 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 git 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个是什么语言都会遇到的问题

通用解决方法就是用stored procedure,利用存储过程来捕捉异常和回滚

评分

参与人数 1积分 +2 收起 理由
方言 + 2 感谢分享

查看全部评分

发表于 2020-9-25 15:16 |显示全部楼层
此文章由 kuxxc 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kuxxc 所有!转贴必须注明作者、出处和本声明,并保持内容完整
begin tran

commit tran
or
rollback tran

发表于 2020-9-25 18:46 来自手机 |显示全部楼层
此文章由 frank_au 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 frank_au 所有!转贴必须注明作者、出处和本声明,并保持内容完整
git 发表于 2020-9-25 14:14
这个是什么语言都会遇到的问题

通用解决方法就是用stored procedure,利用存储过程来捕捉异常和回滚 ...

我想了想,当逻辑复杂的话,这个方法不可持续,会有很多SP。这个等于把应用逻辑写在储存层了,不好管理。
最好还是在应用 层用框架解决。没有框架自己弄个
Advertisement
Advertisement

发表于 2020-9-25 22:24 来自手机 |显示全部楼层
此文章由 kanweng 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kanweng 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Entity framework, Working with Transactions

发表于 2020-9-25 22:24 来自手机 |显示全部楼层
此文章由 kanweng 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kanweng 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Entity framework, Working with Transactions

发表于 2020-9-27 17:16 |显示全部楼层
此文章由 melmonash 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 melmonash 所有!转贴必须注明作者、出处和本声明,并保持内容完整
正确答案已出

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部