在EF中正确的使用事务

1.EF中使用事务:

  
  
using (TransactionScope tran = new TransactionScope())  
{  
    try  
    {  
       using(var _context = new DbContext())
    {
         //执行相关操作
     _context.SaveChanges();  
    }
       
      using(var _context2 = new DbContext())
    {
      //执行相关操作
    _context2.SaveChanges();  

    }
        
        tran.Complete();  
    }  
    catch (Exception ex)  
    {  
        //执行错误处理
    }  
}  
   

  之所以使用两个 using(var _context2= new DbContext())是为了解决有可能出现的“事务中出现异常回滚,数据库数据已经回滚,但是实体模型缓存没有回滚”的问题

 

2.另付PetaPoco中使用事务的方法:

using (var scope=db.Transaction)
{

// 其他任务处理 …
 scope.Complete();

} 

  

 

posted @ 2017-07-03 11:03  心之所向,砥砺前行。  阅读(1548)  评论(0编辑  收藏  举报