.net core - 数据库url解析器

时间:2017-08-27 18:08:17

标签: c# postgresql entity-framework heroku

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

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

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

host=[host];user id=[username];password=[password];database=[database name];pooling=true;

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

1 个答案:

答案 0 :(得分:4)

简单的网址解析工作:

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);
}