.NET Core - 数据库URL解析器

4

我正在Heroku上部署我的.NET Core应用程序。Heroku以以下格式提供数据库URL:

[database type]://[username]:[password]@[host]:[port]/[database name]

EF期望连接字符串的格式如下:
host=[host];user id=[username];password=[password];database=[database name];pooling=true;

有没有可用的解析器来转换,或者我必须自己编写相应的逻辑。
1个回答

7

简单的URL解析已经实现:

Uri url;
bool isUrl = Uri.TryCreate("postgres://1user:1password@dbserver.com:4568/testdb", UriKind.Absolute, out url);
if(isUrl) {
    Console.WriteLine("Host: "+url.Host);
    Console.WriteLine("Port: "+ url.Port);
    Console.WriteLine("Database: "+ url.LocalPath.Substring(1));
    Console.WriteLine("Username: "+ url.UserInfo.Split(':')[0]);
    Console.WriteLine("Password: "+ url.UserInfo.Split(':')[1]);
    var connectionUrl = $"host={url.Host};username={url.UserInfo.Split(':')[0]};password={url.UserInfo.Split(':')[1]};database={url.LocalPath.Substring(1)};pooling=true;";
    Console.WriteLine(connectionUrl);
}

2
你可以使用 NpgsqlConnectionStringBuilder 替代字符串插值。https://dev59.com/MZffa4cB1Zd3GeqP3iMx#53292619 - Brendan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接