C# 从 NpgSqlException 中捕获重复键的值

C# Catch value of duplicate key from NpgSqlException

我知道当 Postgres 引发重复键异常时,它通常会在异常本身的详细信息中给出重复元素的值。

    ERROR:  duplicate key value violates unique constraint "name_of_pkey"
    DETAIL:  Key (field_name)=(value) already exists.

在 C# 中,我如何从 NpgSqlException (NpgSql 3.1.7.0) 中获取该值,因为字段详细信息已从异常中删除 class?

显然,虽然在某些时候可以直接从 NpgSqlException 作为 class 本身的参数访问详细信息,但我现在可以在异常的数据 属性 中作为 KeyValuePair 访问详细信息class,这样:

exception.Data["Detail"]

3.1 migration notes 中所述,在 Npgsql 3.1 中,PostgreSQL 错误作为 PostgresException 抛出,它扩展了 NpgsqlException。 NpgsqlExceptin 因各种客户端错误(例如网络)而被抛出。

您将在 PostgresException 上找到详细信息 属性。