Frameworks “ado.net实体框架”;保留;尽管已退出事务,但仍会发生更改
大家好,我的代码中有一些逻辑问题(adonet实体框架) 这是伪代码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
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吗