Что не так с этим кодом?
Этот код дорогой и бессмысленный.
Этот
var recordsUpdated = DbSet.Where(where).Update(update);
выглядит выборка каждой строки из базы данных и выполнение функции Update
. Затем этот
foreach (var e in DbSet.Where(where))
извлекает каждую строку из базы данных снова , но сопоставляет их все с отслеживаемыми объектами и возвращает отслеживаемый объект, а не тот, который он только что получил из базы данных . Состояние записи объекта меняется на отсоединенное и возвращается к тому, что было раньше.
Что вы пытаетесь выполнить sh?
Если вы хотите обновить каждую строку в таблице, используйте SQL напрямую. Не передавайте их все клиенту, измените их и сохраните обратно.