我正在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;
是否有任何解析器可用于转换,或者我必须为自己编写相同的逻辑。
答案 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);
}