Rollback(), но запрос все еще получает новое значениеC#

Место общения программистов C#
Ответить
Anonymous
 Rollback(), но запрос все еще получает новое значение

Сообщение Anonymous »

Я использую .NET 5 с EF Core 5.0.5 и Pomelo Mysql 5.00.
Я тестирую транзакцию с помощью этого кода:

Код: Выделить всё

public async Task TestTransaction()
{
var listTester = await _context.Tester.ToListAsync();
using var transaction = _context.Database.BeginTransaction();

try
{
for (int i = 0; i 
{
x.Value += i;
});
_context.SaveChanges();
}

transaction.Rollback();
var newLister = await _context.Tester.ToListAsync();
return Ok(newLister);
}
catch (Exception)
{
// TODO: Handle
return BadRequest("Data failed");
}
}
У меня есть данные

Код: Выделить всё

new Tester(){ Name = "test", Value = 0 }
когда код закончился, я получил List

Код: Выделить всё

new Tester(){ Name = "test", Value = 15 }
Данные внутри базы данных MySQL по-прежнему равны 0, поскольку данные откатились, но

Код: Выделить всё

var newLister = await _context.Tester.ToListAsync();
он ​​все равно получил значение = 15.
Почему функцияrollBack() не повлияла на текущие данные ?
Примечание: я хочу протестировать SaveChanges() в каждом цикле, я знаю, что могу поместить SaveChanges после завершения цикла. Но я просто хочу это проверить ;)

Подробнее здесь: https://stackoverflow.com/questions/690 ... -new-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»