C#学习教程:使用TransactionScope的嵌套事务分享


使用TransactionScope的嵌套事务

如果你有这样的话:

IBinaryAssetStructureRepository rep = new BinaryAssetStructureRepository(); var userDto = new UserDto { id = 3345 }; var dto = new BinaryAssetBranchNodeDto("name", userDto, userDto); using (var scope1 = new TransactionScope()) { using(var scope2 = new TransactionScope()) { //Persist to database rep.CreateRoot(dto, 1, false); scope2.Complete(); } scope1.Dispose(); } dto = rep.GetByKey(dto.id, -1, false); 

内部TransactionScope范围2是否也会回滚?

是。

内部事务注册在外部事务的相同范围内,整个事务将回滚。 情况就是这样,因为您没有使用TransactionScopeOption.RequiresNew将内部事务注册为新事务。

请参阅此处以获取有关此主题的说明: http : //web.archive.org/web/20091012162649/http : //www.pluralsight.com/community/blogs/jimjohn/archive/2005/06/18/11451.aspx 。

另请注意, scope1.Dispose是多余的,因为scope1将自动放置在声明它的using块的末尾。

上述就是C#学习教程:使用TransactionScope的嵌套事务分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1269694.html

(0)
上一篇 1天前
下一篇 1天前

精彩推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注