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

Why was NpgsqlException.ConstraintName property removed?

我想知道为什么 NpgsqlException 上的 .ConstraintName 属性 被删除了。我注意到升级到 npgsql 3.1.8 后它不再存在。 (好久没升级npgsql了)

我发现 .ConstraintName 非常有用,因为我有相当多的代码依赖于约束名称(例如,我使用 .ConstraintName 向用户生成 "non technical" 错误消息。)

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

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

这在 migration notes 中有记录。