Пытаюсь обновить значение в строке таблицы тремя разными способами, но по итогу ничего не меняется.
В контроллере получаю нужную строку из таблицы в виде объект класса-сущности.
Вношу необходимые изменения в объект и вызываю await repository.UpdateAsync(userRate);
В самом репозитории я вначале написал просто:
public async Task<UserRate> UpdateAsync(UserRate userRate)
{
context.UserRates.Update(userRate);
await context.SaveChangesAsync();
return userRate;
}
Никаких изменений в БД не произошло. Данные получаются корректно, ибо этот же контроллер добавляет новую строку, если не найдёт нужной. И создание новой строки проходит нормально. Проблема именно с обновлением существующей.
public async Task<UserRate> UpdateAsync(UserRate userRate)
{
context.UserRates.Attach(userRate);
var entry = context.Entry(userRate);
entry.Property(e => e.Score).IsModified = true;
entry.Property(e => e.Review).IsModified = true;
await context.SaveChangesAsync();
return userRate;
}
Аналогично ничего не изменилось.
Попробовал ещё:
public async Task<UserRate> UpdateAsync(UserRate userRate)
{
context.Attach(userRate).State = EntityState.Modified;
await context.SaveChangesAsync();
return userRate;
}
Тоже ничего не дало.
Я что-то не понимаю в работе метода Update
контекста? Как обновить данные в существующей строке.
И ещё, в консоли выходит вот такой SQL запрос, который намекает, что вроде как UPDATE к БД идёт, но видимо данные почему-то в сущности не меняются.
UPDATE "UserRates" SET "review" = @p0, "score" = @p1, "title_id" = @p2, "user_id" = @p3
WHERE "id" = @p4;
Метод котроллера:
[HttpPost]
public async Task<IActionResult> Rate([FromBody] RateViewModel model)
{
var user = await userManager.GetUserAsync(HttpContext.User);
if (user == null) { return Unauthorized(); }
if (model == null) { return NotFound(); }
UserRate userRate = await repository.GetUserRateByUserAndTitleAsync(user.Id, model.TitleId);
if (userRate == null || userRate?.Id == 0)
{
await repository.AddAsync(user.Id, model.TitleId, model.Score);
}
else
{
await repository.UpdateAsync(userRate);
}
return NoContent();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь разобраться с алгоритмом терпеливой сортировки, вроде даже как разобрался с принципом работы алгоритма, но в некоторых случаях элементы...
Как переиначить проект, чтобы при старте программы изначально запускалась вторая форма вместо первойЯ не хочу вызвать вторую из первой и первую...