Основная ошибка Entity Framework при обновлении существующей записи
В моем ASP.NET-Core Code First project
Я получаю следующую ошибку на SaveChangesAsync()
В следующих Action Method
:
ошибка
DbUpdateConcurrencyException: Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded
Метод действия:
public async Task<IActionResult> UpdateWeekDay(int iWeekDay)
{
if (ModelState.IsValid)
{
WeekModel oWeekModel = new WeekModel();
oWeekModel.DayOfWeek= iWeekDay;
_context.Update(oWeekModel);
await _context.SaveChangesAsync();
return View();
}
}
Модель:
public class WeekModel
{
[Key]
public int WeekId { get; set; }
public int DayOfWeek { get; set; }
}
ПРИМЕЧАНИЕ: соответствующая таблица Weeks
в БД SQL Server 2014 есть WeekId as an identity column and as the PK
, Причем таблица содержит только одну запись.
ОБНОВЛЕНИЕ:
Следуя этому сообщению от пользователя sstan, я попробовал следующее в описанном выше методе действий. Это не дает мне ошибки, но и не обновляет базу данных:
WeekModel oWeekModel = new WeekModel();
_context.WeekModel.Attach(oWeekModel);
oWeekModel.DayOfWeek= iWeekDay;
await _context.SaveChangesAsync();
1 ответ
Решение
Следуя совету от @Tseng
а также @ademcaglin
и этот пост от@sstan
Я смог решить проблему следующим образом. ПРИМЕЧАНИЕ. Кредит относится к вышеупомянутым пользователям (спасибо этим пользователям):
public async Task<IActionResult> UpdateWeekDay(int iWeekDay)
{
if (ModelState.IsValid)
{
WeekModel oWeekModel = _context.WeekModel.Where(s => s.DayOfWeek > 0).FirstOrDefault<CurrentYear>();
_context.WeekModel.Attach(oWeekModel);
oWeekModel.DayOfWeek= iWeekDay;
await _context.SaveChangesAsync();
return View();
}
}