Search code examples
entity-frameworkasp.net-core-mvc-2.0

ASP.NET Core EF DbUpdateConcurrencyException


I was trying to manually implement a cascade delete in my ASP.NET Core website. So, I got a Poll section which is based on 3 entities: PollQuestion, PollOption, PollAnswer. I'm starting this by deleting all the answers, and this goes fine, then I move to deleting the options with this code:

if (answersDeleted) {
    options = GetOptionsList(_pollID);
    context.PollOption.RemoveRange(options);
    context.SaveChanges();
    return true;
} else { 
    return false;
}

When the SaveChanges() is executed I get this exception:

Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: Database operation expected to affect 1 row(s) but actually affected 2 row(s). Data may have been modified or deleted since entities were loaded.

So. I can't really understand why he was expecting to affect 1 row since I pass a list to RemoveRange().


Solution

  • In case someone could make use of this one day.... i found the problem, it wasn't strictly related to the chunk of code i posted; few days ago i modified the poll table, and changed the Key, from a single field key to a composite key, then i forgot to reflect that change in my Model, which still was using a single key. It wasn't returning any error so i didn't notice this until i had to do other stuff on the DB and there i found the problem.