Как в CommitContext использовать on conflict для обновления записей которые уже существуют

Имею около 4000 записей которые надо вставить в Postgree базу и вместе с тем 2000 из этих записей уже есть в бд и мне нужно их просто обновить. Придется писать свой sql запрос или в CommitContext можно задать правило on conflict duplicate?

Добрый день,
Думается, что с точки зрения производительности будет правильнее написать native SQL запрос.
Он позволит вам вставить все 4000 записей в БД одним запросом, и при этом обработать конфликты primary key.

Если вы работаете через ORM, такого не получится. ORM обязательно будет выполнять индивидуальные select по каждой записи, чтобы проверить, существует ли уже запись в БД или еще нет.

У решения с native SQL есть и минусы.

  • не будут срабатывать entity changed events, entity listeners
  • не будет производиться автоматическая запись в entity log
  • не будут проставляться поля аудита createdBy, createTs и другие - но это вы можете и сами включить в запрос.