Frameworks “ado.net实体框架”;保留;尽管已退出事务,但仍会发生更改

Frameworks “ado.net实体框架”;保留;尽管已退出事务,但仍会发生更改,frameworks,ado.net,transactions,entity,rollback,Frameworks,Ado.net,Transactions,Entity,Rollback,大家好,我的代码中有一些逻辑问题(adonet实体框架) 这是伪代码 i = 0 while i < 5 using transactionreadcommited { var getuser = (from a in mydb.users where userid.equals(1) select a).firstordefault try { getuser.moneyBalance -= 10; //error

大家好,我的代码中有一些逻辑问题(adonet实体框架)

这是伪代码

i = 0

while i < 5

   using transactionreadcommited

   {

     var getuser = (from a in mydb.users where userid.equals(1) select a).firstordefault

    try {

        getuser.moneyBalance -= 10;

       //error here

       some command here causing expected error so it goes to catch ;


        db.savechanges()
        transaction.complete()

  }catch{

     i = i + 1

  }

 }

end while
i=0
当我<5岁时
使用TransactionReadCommitted
{
var getuser=(从mydb.users中的a开始,其中userid.equals(1)选择a)
试一试{
getuser.moneyBalance-=10;
//这里出错
此处的某个命令导致预期错误,因此它将被捕获;
db.savechanges()
事务处理完成()
}抓住{
i=i+1
}
}
结束时
问题是:

每次在while循环中重试时,我都会在新事务中获得一个新用户

用户的初始资金余额是100。I减去10,所以它变成了90

但如果某个命令失败,它将退出事务并重试-

在第二个循环中,用户的钱变成初始值90-10=80。既然我重新创建了一个新的事务,并且没有提交第一个循环,那么它不应该恢复到100吗