我有一个 .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
继承的。它不提供验证连接字符串的方法。
有人知道该类在构造实例时是否执行连接字符串验证吗?
答案 0 :(得分:2)
SqlConnectionStringBuilder 是 SqlClient 连接字符串构建器,因此特定于 Microsoft 的 SQL Server 数据库。 SqlConnectionStringBuilder 和 NpgsqlConnectionStringBuilder 都派生自 DbConnectionStringBuilder,后者是与数据库无关的基类。
是的,NpgsqlConnectionStringBuilder 会验证字符串 - 您可以尝试使用错误的连接字符串。但是,这并不能保证连接实际上会成功 - 只是连接字符串格式正确并且不会尝试使用不受支持的选项等。请考虑仅尝试打开连接。