boj*_*boj 6 .net c# transactions
我想创建一个事务,在子事务中写入一些数据,读回数据,然后回滚事务.
using(var transaction = new TransactionScope())
{
using(var transaction = new TransactionScope())
{
// save data via LINQ / DataContext
transaction.Complete();
}
// Get back for assertions
var tempItem = // read data via LINQ / DataContext THROWS EXCEPTION
}
Run Code Online (Sandbox Code Playgroud)
但是在阅读时我得到"System.Transactions.TransactionException:该操作对于事务的状态无效."
我应该如何设置事务属性以避免这种情况?
如果没有完整的堆栈跟踪,则无法调试此异常.根据具体情况,它有不同的含义.通常这意味着你正在做一些你不应该在事务中做的事情,但是没有看到db调用或堆栈跟踪所有人都可以做的就是猜测.我所知道的一些常见原因(我认为这绝不是全面的)包括:
TransactionScope
.这会导致升级到分布式事务,如果您没有运行DTC,它将失败.答案通常不是启用DTC,而是清理事务或用新的包装其他数据访问TransactionScope(TransactionOptions.RequiresNew)
.TransactionScope
.我绝对不知道每一个可能的原因,但是如果你在你的代码中发布完整的堆栈跟踪和实际的db调用,我会看看并告诉你我是否看到了什么.
归档时间: |
|
查看次数: |
7801 次 |
最近记录: |