我遇到了有线问题需要你的帮助。我有嵌套的交易。 outer方法调用一个内部方法SaveChangesToSource来打开另一个事务范围。其实我知道我的底层sql可能有问题。我无法理解的是为什么我的内部事务成功完成,看起来异常被推迟,直到我调用外部cope.Complete ??
using (TransactionScope scope = new TransactionScope())
{
SaveChangesToSource(changes);
scope.Complete();
}
protected override void SaveChangesToSource(IEnumerable<IChange> changes)
{
using (TransactionScope scope = new TransactionScope())
{
_bl.SaveChanges(changes);
scope.Complete();
}
}
答案 0 :(得分:1)
MS文档说,嵌套事务中的更改对于顶级事务是不可见的,直到提交嵌套事务为止,即使这样,在提交该事务之前,更改在顶级事务之外是不可见的。恕我直言,如果我正确地解释了这一点,那么外部交易的失败将触发你成功的内部交易的回滚。