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

本文关键字:Context 对象 是否 适用于 TransactionScope | 更新日期: 2024-07-23 07:00:43

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

在Bll:

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

在数据访问中:

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();
  }
}

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

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