Я столкнулся с некоторым поведением в 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, или его следует избегать, а внутри блока следует добавить еще одну операцию сохранения?