NpgsqlConnectionStringBuilder 是否能够验证连接字符串?

Is NpgsqlConnectionStringBuilder able to validate a connection string?

我有一个 .Net 5 应用程序,想添加 Ef Core 和 Postgres 支持。我想验证来自 IConfiguration 的数据库连接字符串。基于这个问题

How to check is connection string valid?

我知道继承自 SqlConnectionStringBuilder 的构建器会检查构造函数中的连接字符串。所以我创建了一个演示代码验证的样子

bool Validate(IConfiguration options)
{
    try
    {
        string databaseConnectionString = options.GetConnectionString("Database");
        _ = new NpgsqlConnectionStringBuilder(databaseConnectionString);

        return true;
    }
    catch (Exception exception)
    {
        return false;
    }
}

我看过 NpgsqlConnectionStringBuilder

https://www.npgsql.org/doc/api/Npgsql.NpgsqlConnectionStringBuilder.html

并看到它没有继承自 SqlConnectionStringBuilder。它不提供验证连接字符串的方法。

有人知道 class 在构造实例时是否执行连接字符串验证吗?

SqlConnectionStringBuilder 是 SqlClient 连接字符串生成器,因此特定于 Microsoft 的 SQL Server 数据库。 SqlConnectionStringBuilder 和 NpgsqlConnectionStringBuilder 都派生自 DbConnectionStringBuilder,它是与数据库无关的基础 class.

是的,NpgsqlConnectionStringBuilder 会验证字符串 - 您可以尝试使用错误的连接字符串。但是,这并不能保证连接实际上会成功 - 只是连接字符串格式正确并且不会尝试使用不受支持的选项等。考虑只尝试打开连接。