2016-10-20 59 views
0

我想知道爲什麼NpgsqlException的.ConstraintName屬性被刪除。我發現在升級到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