Задать вопрос
@mletov

Как сделать групповой update в entity framework так, чтобы не нарушить constarint?

Пожалуйста, подскажите

Есть таблица, в ней есть поле, с ограничением UNIQUE.
Мне эту таблицу надо апдейтить.
Если все делать в чистом sql, то проблемы нет, т к апдейт происходит одним запросом.
Но через EF не получается, т к строки апдейтятся поштучно.

Пример:
Поле год уникально. Я хочу в запись, где стоял 2020 поставить 2019, и наоборот, короче, поменять местами.
Вот рабочий пример на sql.
UPDATE table
SET year = (CASE WHEN year = 2019 THEN 2020 WHEN year = 2020 THEN 2019 END)
WHERE year IN (2019, 2020)


А в ef так не выйдет, т к все апдейты идут последовательно, а не все сразу, даже если context.SaveChanges() вызвать только один раз в самом конце. Мы апдейтим строчку = 2020, но т к запись с уникальным 2020 уже есть, то вполне закономерно получаем ошибку.

NetFramework 6.2.0, не Core.

Вариант с удалением старых записей и вставкой новых не подходит, т к на сущность могут быть завязаны другие таблицы.

Есть ли механизм апдейтить все сразу через ef?
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Емнип, EF не позволяет апдейтить много записей одним запросом. Используйте sql
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы