привет, ребята, у меня есть некоторые проблемы с логикой в моем коде (структура сущности 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
проблема в том, что:
Я получаю нового пользователя в новой транзакции каждый раз, когда он повторяет попытку в цикле while
Начальный баланс пользователя составляет 100. Я минус 10, поэтому он становится 90
.
, но если какая-то команда завершится неудачно, она выйдет из транзакции и повторите попытку -
во 2-м цикле деньги пользователя становятся начальными 90 - 10 = 80. не должны ли они вернуться к 100, поскольку я заново создаю новую транзакцию и не зафиксировал первый цикл?