我想知道为什么删除了NpgsqlException上的.ConstraintName属性。我注意到升级到npgsql 3.1.8后它不再存在。 (我很长时间没有升级过npgsql)
我发现.ConstraintName非常有用,因为我的代码中有很多依赖于约束名称(例如我使用.ConstraintName为用户生成“非技术性”错误消息。)
这是否意味着我需要每次从NpgsqlException.Message或NpgsqlException.BaseMessage手动解析约束名称,还是有另一种方法从我不知道的中获取ConstraintName?
答案 0 :(得分:2)
未删除ConstraintName。在Npgsql 3.1中,PostgreSQL引发的错误被抛出为PostgresException
,而客户端错误(例如网络)被抛出为NpgsqlException
(这也是PostgresException
的超类)。如果您抓住PostgresException
而不是NpgsqlException
,您将找到所有错误属性,例如ConstraintName。
migration notes中记录了这一点。