コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: Oracle.cs プロジェクト: eboxmaker/X
        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);
            }
        }