@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?
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vabka
Токсичный
Емнип, EF не позволяет апдейтить много записей одним запросом. Используйте sql
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
PickPoint Москва
от 120 000 ₽
Sibedge Москва
До 200 000 ₽
NGRS Москва
от 230 000 до 250 000 ₽
28 февр. 2021, в 01:35
200000 руб./за проект
28 февр. 2021, в 00:22
2500 руб./за проект
27 февр. 2021, в 22:14
30000 руб./за проект