.net core - 数据库 url 解析器

adn*_*ili 3 c# postgresql entity-framework heroku

我正在 Heroku 上部署我的 .net 核心应用程序。Heroku 提供以下格式的数据库 url:

[database type]://[username]:[password]@[host]:[port]/[database name]
Run Code Online (Sandbox Code Playgroud)

EF 期望连接字符串采用以下格式:

host=[host];user id=[username];password=[password];database=[database name];pooling=true;
Run Code Online (Sandbox Code Playgroud)

是否有任何解析器可用于转换,或者我必须自己编写相同的逻辑。

adn*_*ili 6

简单的 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用“NpgsqlConnectionStringBuilder”代替字符串插值。/sf/answers/3730483361/ (2认同)