我需要在用户操作后保存到两个不同的数据库。目前,我有以下内容:
using (EFEntities1 dc = new EFEntities1())
{
dc.USERS.Add(user);
dc.SaveChanges();
}
using (EFEntities2 dc = new EFEntities2())
{
dc.USERS.Add(user);
dc.SaveChanges();
}
这是同一方法中的两个独立代码块,所以我相信如果第二个代码块失败,第一个代码块将不会回滚。如果出现故障,如何确保两个事务都回滚?
答案 0 :(得分: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();
}