Извините за вопрос, я изучаю Asp.net с EF, и у меня проблемы с конкретным обновлением.
Я хочу сделать систему, в которой есть транзакции между счетами. Конструктивная часть в порядке, но проблема в следующем:
Когда обновление выполняется, система выполняет перевод в обычном режиме, другими словами, на обоих счетах есть 100 долларов, я выполняю транзакцию на 10 долларов, поэтому одна учетная запись остается 110 долларов, а другая - 90 долларов.
Но при втором переводе на одном счете остается 80 долларов, а на другом - 100 долларов.
Вот код:
[HttpPost]
public ActionResult TransferCurrency(Usuario usuario, ViewModelTransfer viewModel)
{
if (usuario.Id == 0)
{
return HttpNotFound();
}
if (viewModel.ForId == null)
{
return HttpNotFound();
}
var usuarioTransaction = _context.Usuario.Single(c => c.NConta == viewModel.ForId);
usuarioTransaction.Currency = usuario.Currency + viewModel.Transfer;
var usuarioInDb = _context.Usuario.Single(m => m.Id == usuario.Id);
usuarioInDb.Currency = usuario.Currency - viewModel.Transfer;
_context.SaveChanges();
return RedirectToAction("Index");
}
Кто-нибудь знает, что я здесь делаю не так?
Спасибо!





Вашему примеру немного сложно следовать, поскольку он не полностью на «английском», поэтому я не совсем уверен, что пытается сделать ваш пример. Похоже, что он ищет одну учетную запись и добавляет к ней сумму перевода, а затем пытается уменьшить ее по другой. Поскольку это срабатывает один раз, я предполагаю, что ваш длительный контекст вызывает вашу проблему. Когда вы инициализируете контекст БД? В конструкторе контроллера? Я бы рекомендовал перенести эту инициализацию контекста db в этот метод и посмотреть, решит ли он вашу проблему.