TransactionScope是否适用于不同的Context对象

时间:2016-04-10 07:29:31

标签: c# asp.net asp.net-mvc entity-framework

我在BLL中使用TransactionScope。我有数据访问层的存储库类,每个crud创建自己的Context。这会有用吗?

在Bll:

using (var scope = new TransactionScope(TransactionScopeOption.Required)) 
    { 
        rep.addItme(Myentity);
        rep.updateItme(MyAnotherEntity);
            scope.Complete(); 
    }

在DataAccess中:

class rep
{
  void addItmem(Entity entity)
  {
    using(var context=new MydbContext)
     {  
     //---state is set here
     context.Entity.add(entity);
     context.SaveChanges();
    }

   }
  void updateItem(Entity entity)
 {
 using(var context=new MydbContext)
   {
     //--state is set here
     context.Entity.add(entity);
      context.SaveChanges();
  }
}

1 个答案:

答案 0 :(得分:1)

在TransactionScope的范围(括号)内实例化的所有DbContext将自动注册到TransactionScope的内部事务中,默认情况下它是Ambient事务。所以是的它应该有用。