0

一些用户操作后,我需要保存到两个不同的数据库。目前,我有以下内容:

using (EFEntities1 dc = new EFEntities1())
{
     dc.USERS.Add(user);
     dc.SaveChanges();
}

using (EFEntities2 dc = new EFEntities2())
{
     dc.USERS.Add(user);
     dc.SaveChanges();
}

这是同一方法中的两个单独的代码块,所以我相信如果第二个失败,第一个不会回滚。如果出现故障,如何确保两个事务都回滚?

4

1 回答 1

2

您可以将它们包装在TransactionScope中。请注意,这可能会调用DTC

using (TransactionScope scope = new TransactionScope())  
{
  using (EFEntities1 dc = new EFEntities1())
  {
     dc.USERS.Add(user);
     dc.SaveChanges();
  }

  using (EFEntities2 dc = new EFEntities2())
  {
     dc.USERS.Add(user);
     dc.SaveChanges();
  }

  scope.complete();
}
于 2012-10-16T02:30:41.497 回答