Здравствуйте, swimmers, Вы писали:
S>Здравствуйте,
S>Что-то не пойму, какой нужно написать код, что-бы при вставке при совпадении ПК ничего не вставлялось и не возникала ошибка?
S>Т.е. что-бы получился SQL вида INSERT ... ON CONFLICT (...) DO NOTHING?
S>db.Table.InsertOrUpdate(insertExpr, updateExpr, keySelector)?
S>Но что писать во втором параметре (updateExpr)?
S>Или есть какой-то другой рекомендуемый способ?
Полноценная поддержка ON CONFLICT и подобных пока только в планах. Нужно время либо добровольцы.
InsertOrUpdate для postgresql генерирует INSERT ON CONFLICT UPDATE. Если устраивает такое, то в update просто указать обновление поля на себя же например
db.Table.InsertOrUpdate(
// данные для insert: PK поля + остальные поля которые надо вставить
() => new Table() {pk=pk_value, field1=value1, field2=value2},
// данные для update: обновить field1 значением этого же поля
record => new Table() { field1 = record.field1 });
как-то так