Имею около 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 и другие - но это вы можете и сами включить в запрос.