protected override void OnSetConnectionString(XDbConnectionStringBuilder builder) { // Oracle强制关闭反向工程,禁止通过连接字符串设置 if (builder.TryGetAndRemove(_.Migration, out var value) && !value.IsNullOrEmpty()) { //var mode = (Migration)Enum.Parse(typeof(Migration), value, true); //DAL.WriteLog(""); } base.OnSetConnectionString(builder); // 修正数据源 if (builder.TryGetAndRemove("Data Source", out var str) && !str.IsNullOrEmpty()) { if (str.Contains("://")) { var uri = new Uri(str); var type = uri.Scheme.IsNullOrEmpty() ? "TCP" : uri.Scheme.ToUpper(); var port = uri.Port > 0 ? uri.Port : 1521; var name = uri.PathAndQuery.TrimStart("/"); if (name.IsNullOrEmpty()) { name = "ORCL"; } str = $"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL={type})(HOST={uri.Host})(PORT={port})))(CONNECT_DATA=(SERVICE_NAME={name})))"; } builder.Add("Data Source", str); } }
protected override void OnSetConnectionString(XDbConnectionStringBuilder builder) { base.OnSetConnectionString(builder); // 修正数据源 if (builder.TryGetAndRemove("Data Source", out var str) && !str.IsNullOrEmpty()) { if (str.Contains("://")) { var uri = new Uri(str); var type = uri.Scheme.IsNullOrEmpty() ? "TCP" : uri.Scheme.ToUpper(); var port = uri.Port > 0 ? uri.Port : 1521; var name = uri.PathAndQuery.TrimStart("/"); if (name.IsNullOrEmpty()) { name = "ORCL"; } str = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL={0})(HOST={1})(PORT={2})))(CONNECT_DATA=(SERVICE_NAME={3})))".F(type, uri.Host, port, name); } builder.Add("Data Source", str); } }