首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TransactionScope相关实践

TransactionScope相关实践
EN

Stack Overflow用户
提问于 2012-09-25 10:20:02
回答 2查看 253关注 0票数 0

我可以在DataBase中做任何其他的事情(与TransactionScope无关)吗?

这会不会是一种糟糕的做法?

e.g

在范围内启动工作流。

除非启动工作流失败,否则我不想保存在DB中。

如果练习不好,什么是好练习?

提前谢谢。

代码语言:javascript
复制
using (TransactionScope scope = new TransactionScope())
{
    using (ComponentCM.Audit auditComponent = new ComponentCM.Audit())
    {
        using (AccessCM.Biz dataAccess = new AccessCM.Biz())
        {
            auditComponent.SaveInDB();
            dataAccess.SaveinDB()

            StartWorkflow();
        }
    }
    scope.Complete();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 10:28:39

您希望事务花费尽可能少的时间,因为它们可能导致对数据库的锁定。

在这方面,最好在事务范围之外进行其他工作。

票数 3
EN

Stack Overflow用户

发布于 2012-09-25 10:44:30

我同意奥德的观点。

我还要补充的是,scope of TransactionScope应该定义在工作单元中定义的状态更改。换句话说,范围内的状态更改应该全部成功或一起失败,并且通常是同一逻辑操作的一部分。

为了保持尽可能小的范围,一种常见的模式是乐观并发。使用乐观并发时,通常只在对状态存储执行写操作时打开事务范围。在这种情况下,您将例外,通常您正在处理的数据在查询和提交之间不会更改(通过另一个操作)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12580917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档