2016-10-20 9 views
0

Мне интересно, почему свойство .ConstraintName в NpgsqlException было удалено. Я заметил, что он больше не существовал после обновления до npgsql 3.1.8. (Я не обновлял npgsql в течение длительного времени)Почему было исключено свойство NpgsqlException.ConstraintName?

Я нашел .ConstraintName, чтобы быть очень полезным, потому что у меня было совсем немного моего кода, зависящего от имени ограничения (например, я использовал .ConstraintName для генерации "нетехнических "сообщения об ошибках пользователю.)

Означает ли это, что мне нужно вручную разобрать имя ограничения каждый раз из NpgsqlException.Message или NpgsqlException.BaseMessage или есть другой способ получить ConstraintName из-за этого я не знаю ?

ответ

2

ConstraintName не был удален. В Npgsql 3.1 ошибки, вызванные PostgreSQL, генерируются как PostgresException, тогда как ошибки на стороне клиента (например, сети) выбрасываются как NpgsqlException (что также является суперклассом для PostgresException). Если вы поймаете PostgresException вместо NpgsqlException, вы найдете все свойства ошибки, такие как ConstraintName.

Это задокументировано в migration notes.

+0

О, круто! Спасибо Вам большое за информацию. Я думаю, что мне было около 12-16 выпусков позади, так что мне потребовалось бы много времени, чтобы найти это. – Skyguard

+0

классный ответ, я тоже был потерян – docesam