TransactionScope的一点使用心得
在asp.net中使用TransactionScope进行事务处理时,在同一事务范围内,前一部分代码以参与事务方式对数据库进行操作,后一部分代码以非事务方式对数据库进行操作。最终结果会是后一部分代码执行超时失败。
如下代码所示:
注意这里是指同一数据库,为什么会这样呢?我想很有可能是前一步参与事务的操作,将数据库死锁了,而导致后一步无法正常执行,以至于超时。
如下代码所示:
using(TransactionScope scope1 = new TransactionScope())
{
// 事务方式对数据库进行操作
using(TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Suppress))
{
// 非事务方式对数据库进行操作
}
}
{
// 事务方式对数据库进行操作
using(TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Suppress))
{
// 非事务方式对数据库进行操作
}
}
注意这里是指同一数据库,为什么会这样呢?我想很有可能是前一步参与事务的操作,将数据库死锁了,而导致后一步无法正常执行,以至于超时。