我发现了一些与ASP.NET Core 2.2和EF相关的行为,我不确定它是否是有意的,特别是它是否安全。
给定以下代码:
{
//...
if (condition)
{
var result = await MyDbContext.MyTable
.Where(data => data.Id == id)
.FirstOrDefaultAsync();
result.MyColumn -= 42;
}
//...more MyDbContext operations
await MyDbContext.SaveChangesAsync();
//...
}
EF Core能够成功地查询数据库并相应地更新MyColumn字段(在本例中进行了42次减法),即使result
变量的声明和减法操作是在一个单独的块(和作用域)中完成的。
这是EF操作的预期且可靠的行为,还是应该避免这种情况并在块内添加另一个保存操作?