Npgsql правильно создает исключение PostgresException с Ошибка PostgreSQL 23505 (дублирующее значение ключа нарушает ограничение уникальности), вот некоторый код, который показывает это:
using (var conn = OpenConnection())
{
using (var cmd = new NpgsqlCommand("CREATE TABLE foo (id INT PRIMARY KEY)", conn))
cmd.ExecuteNonQuery();
using (var cmd = new NpgsqlCommand("INSERT INTO foo (id) VALUES (1)", conn))
cmd.ExecuteNonQuery();
using (var cmd = new NpgsqlCommand("INSERT INTO foo (id) VALUES (1)", conn))
cmd.ExecuteNonQuery();
}
Возможно, проблема в вашем коде,Если вы все еще думаете, что есть проблема, отправьте полный пример, в том числе, какую версию Npgsql вы используете, и полную, работающую консольную программу, показывающую проблему (как я это делал во фрагменте выше).