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

时间:2021-02-14 16:39:43

标签: c# entity-framework-core npgsql

我有一个 .Net 5 应用程序,想添加支持 Postgres 的 Ef Core。我想验证来自 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 继承的。它不提供验证连接字符串的方法。

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

1 个答案:

答案 0 :(得分:2)

SqlConnectionStringBuilder 是 SqlClient 连接字符串构建器,因此特定于 Microsoft 的 SQL Server 数据库。 SqlConnectionStringBuilder 和 NpgsqlConnectionStringBuilder 都派生自 DbConnectionStringBuilder,后者是与数据库无关的基类。

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