Intereting Posts
как решить Исключение: Звонок был отклонен вызываемым. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) в C #? Управляемый .NET эквивалент CreateFile & WriteFile из WinBase (kernel32.dll) Может ли C # быть подключен к сети? Может ли метод базового classа возвращать тип производного classа? Как использовать олицетворение в приложении C # Winforms для запуска с правами администратора? Повышенное исключение в случае одновременного доступа к файлам с помощью StreamReader C #: мониторинг скопированных или перемещенных файлов с помощью FileSystemWatcher Округление до C # Преобразование вложенного словаря в IReadOnlyDictionary Запросить веб-страницу в c #, обманывая Host Как сохранить новую запись с хешированным паролем в моей пользовательской таблице вместо пользователя aspnet? Xpath для выбора следующего брата Есть ли эффективный алгоритм для сегментации рукописного текста? Использование Microsoft.Build.Evaluation для публикации проекта базы данных (.sqlproj) Лучший способ сравнить два словаря для равенства

EF – Обновление нескольких строк в базе данных без использования цикла foreach

Мой тестовый код:

using (var db = new MyDbContext()) { string fromUser = ""; //sender string toUser = ""; //receiver var messages = db.Message.Where(x => x.FromUser == fromUser && x.ToUser == toUser) .ToList(); foreach (var message in messages) { message.IsRead = true; db.SaveChanges(); } } 

Мой вопрос: есть ли другой способ обновления базы данных без использования цикла foreach в этом случае?

p / s: Я обращался к этим вопросам, но все они не решили мою проблему:

  • Обновление нескольких строк в datatable без цикла

  • обновление нескольких записей в базе данных с помощью linq to sql без цикла, возможно ли это?

  • Обновление нескольких строк без циклов

Вам не нужно SaveChanges () на каждой итерации. Это ударит по базе данных несколько раз. Пытаться:

 using (var db = new MyDbContext()) { string fromUser = ""; //sender string toUser = ""; //receiver var messages = db.Message.Where(x => x.FromUser == fromUser && x.ToUser == toUser) .ToList(); messages.ForEach(m => m.IsRead = true); db.SaveChanges(); }