2016-11-05 5 views
1

Я знаю, что когда Postgres создает дублирующее ключевое исключение, оно обычно дает значение дублирующего элемента в деталях самого исключения.C# Поймать значение дублирующего ключа из NpgSqlException

ERROR: duplicate key value violates unique constraint "name_of_pkey" 
    DETAIL: Key (field_name)=(value) already exists. 

От C#, как я могу получить это значение из NpgSqlException (NpgSql 3.1.7.0) теперь, что поле деталь была удалена из класса исключений?

+0

Если его не указывать, проверьте, содержит ли он ключ перед добавлением –

+0

спасибо, я заметил комментарий слишком поздно. это привело бы меня быстрее, чем я сделал к решению – strongmmc

+0

Помогло ли вам это? Чтобы я мог ответить. Могли ли бы вы принять это, пожалуйста ? –

ответ

1

Как упоминалось в 3.1 migration notes, в Npgsql 3.1. Ошибки PostgreSQL генерируются как PostgresException, что расширяет исключение NpgsqlException. NpgsqlExceptin выбрасывается для различных клиентских ошибок (например, для сетей).

Вы найдете свойство Detail на PostgresException.

+0

Это именно то, что я искал. Позор мне, я не искал заметки о миграции! – strongmmc

0

По-видимому, в какой-то момент детали в то время был accessibile непосредственно из NpgSqlException в качестве параметра самого класса, я могу теперь получить доступ к детали как KeyValuePair в свойстве данных класса Exception, таким образом:

exception.Data["Detail"] 

 Смежные вопросы

  • Нет связанных вопросов^_^