Entity Framework Core error on updating an existing record

asp.net-core asp.net-mvc-scaffolding entity-framework-core visual-studio-2015

Question

In my ASP.NET-Core Code First project, I'm getting the following error on SaveChangesAsync() in the following Action Method:

Error

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

Action Method:

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();
        }
}

Model:

public class WeekModel
{
    [Key]
    public int WeekId { get; set; }
    public int DayOfWeek { get; set; }
}

NOTE: The corresponding table Weeks in the SQL Server 2014 Db has WeekId as an identity column and as the PK. Moreover, the table contains only one record.

UPDATE:

Following this Post from user sstan, I tried the following in the above Action Method. It does not give me an error but does not update the db as well:

WeekModel oWeekModel = new WeekModel();
_context.WeekModel.Attach(oWeekModel);
oWeekModel.DayOfWeek= iWeekDay;
await _context.SaveChangesAsync();
1
0
5/23/2017 12:18:34 PM

Accepted Answer

Following advice from @Tseng and @ademcaglin and this post from @sstan I was able to resolve the issue as follows. NOTE: Credit goes to above mentioned users (my thanks to these users):

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();
   }
}
0
5/23/2017 10:28:47 AM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow