2016-10-20 57 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