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

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

Войти через центр авторизации
Похожие вопросы