日期:2014-05-17  浏览次数:20469 次

entity framework db.SaveChangs() 和事务的问题
TransactionOptions tOpt = new TransactionOptions();
  tOpt.Timeout = new TimeSpan(0, 15, 0);
  using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required, tOpt))
  {
action1();//存数据到表1
action2();存数据到表2
action3();存数据到表3
//表1,2,3都有db.SaveChanges();
//action 1,2,3为三个方法
 transaction.Complete();
}
这个时候1,2 方法没有错,3方法错了,按理应该回滚啊。但是为什么1,2表里面的数据都存进去了啊?求解啊。。。。


------解决方案--------------------
//表1,2,3都有db.SaveChanges();
改为
action1()中的db.SaveChanges(false);
然后在

 transaction.Complete();
db.AcceptAllChanges();
}