为什么删除了NpgsqlException.ConstraintName属性?

时间:2016-10-20 15:51:09

标签: npgsql

我想知道为什么删除了NpgsqlException上的.ConstraintName属性。我注意到升级到npgsql 3.1.8后它不再存在。 (我很长时间没有升级过npgsql)

我发现.ConstraintName非常有用,因为我的代码中有很多依赖于约束名称(例如我使用.ConstraintName为用户生成“非技术性”错误消息。)

这是否意味着我需要每次从NpgsqlException.Message或NpgsqlException.BaseMessage手动解析约束名称,还是有另一种方法从我不知道的中获取ConstraintName?

1 个答案:

答案 0 :(得分:2)

未删除ConstraintName。在Npgsql 3.1中,PostgreSQL引发的错误被抛出为PostgresException,而客户端错误(例如网络)被抛出为NpgsqlException(这也是PostgresException的超类)。如果您抓住PostgresException而不是NpgsqlException,您将找到所有错误属性,例如ConstraintName。

migration notes中记录了这一点。