Что-то не пойму, какой нужно написать код, что-бы при вставке при совпадении ПК ничего не вставлялось и не возникала ошибка?
Т.е. что-бы получился SQL вида INSERT ... ON CONFLICT (...) DO NOTHING?
db.Table.InsertOrUpdate(insertExpr, updateExpr, keySelector)?
Но что писать во втором параметре (updateExpr)?
Здравствуйте, 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 });
Здравствуйте, swimmers, Вы писали:
S>Здравствуйте, Mace Windu, Вы писали:
MW>>Полноценная поддержка ON CONFLICT и подобных пока только в планах. Нужно время либо добровольцы.
S>А вот в PostgreSQLSqlBuilder.BuildInsertOrUpdateQuery вроде все уже написано, но что и как написать, что-бы попасть сюда?
хм, точно. тогда пустой update вторым параметром если пропустит такое: