【发布时间】:2021-09-05 11:40:04
【问题描述】:
我将 .NET 5 与 EF Core 5.0.5 和 Pomelo Mysql 5.00 一起使用。
我用这段代码测试了一笔交易:
public async Task<IActionResult> TestTransaction()
{
var listTester = await _context.Tester.ToListAsync();
using var transaction = _context.Database.BeginTransaction();
try
{
for (int i = 0; i <= 5; i++)
{
listTester.ForEach(x =>
{
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 }
代码完成后我收到了列表
new Tester(){ Name = "test", Value = 15 }
mysql db里面的数据还是0因为数据回滚了,但是在
var newLister = await _context.Tester.ToListAsync();
它仍然得到Value = 15。
为什么rollBack() 没有影响当前数据?
注意:我想在每个循环上测试SaveChanges(),我知道我可以在循环完成后放置SaveChanges。但我也只是想测试一下;)
【问题讨论】:
标签: c# .net-core entity-framework-core .net-5