首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TransactionScope函数

TransactionScope函数
EN

Stack Overflow用户
提问于 2011-08-19 19:13:02
回答 2查看 1.7K关注 0票数 1

在.net中处理事务。我有一个关于通过子函数流动事务的问题。如果对象上下文在子方法中是通用的,我需要使用依赖事务吗?

例如,在下面的代码中-我在类的构造函数中声明了对象上下文(不确定这是否是最佳实践)

代码语言:javascript
复制
public class EmployeeRepository
{
    private EmployeeContext ec;        
    public EmployeeRepository()
    {
        objectContext = new EmployeeContext();            
    }       
    public InitTransaction(EmployeeEntity emp1)
    {
         using (TransactionScope transaction = new TransactionScope())
        {
            try
            {   ec.employees.AddObject(emp1);
                SubFunction1();
                ec.SaveChanges();                               
            }
            catch
            {
                //catch 
            }
        }
        //commit the transaction here 
        ec.AcceptAllChanges();
    }

    public SubFunction1()
    {
        //some processing 
        //using same object context
        ec.someother.AddObject(someobject);
        ec.SaveChanges();
    }
}

我希望子功能也成为事务的一部分?在这种情况下,即使我使用相同的对象上下文,我也应该在SubFunction1中使用依赖事务吗?或者我应该添加一个

代码语言:javascript
复制
using (TransactionScope transaction = new TransactionScope());

在SubFunction1中。在正确的方向上的指针将非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-19 19:22:48

事务作用域可以是嵌套的(它们的工作方式类似于SQL @@TRANCOUNT机制),所以从理论上讲,您可以在存储库中使用TransactionScopes,例如,不仅可以在业务/服务层中保持父表:子表关系的ACID,还可以在业务/服务层中使用分布式事务(例如,跨多个实体,可能跨多个数据库,甚至跨其他资源,如消息队列和Transactional file systems )。

请注意,default isolation level of TransactionScope是可读序列化的-这可能会导致锁定/死锁。

票数 1
EN

Stack Overflow用户

发布于 2011-08-19 19:36:19

您可以考虑使用依赖项注入来传递相同的ObjectContext,这样就可以避免TransactionScope

不是在存储库中创建Context,而是通过构造函数注入它。

代码语言:javascript
复制
public class EmployeeRepository
{
    private EmployeeContext ec;        
    public EmployeeRepository(EmployeeContext objectContext)
    {
        ec = objectContext;            
    }       

}

看一看this answer

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

https://stackoverflow.com/questions/7120738

复制
相关文章

相似问题

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