Exemplo n.º 1
0
        public override string GetTableName(PocoData pd, TableNameManger tn)
        {
            var ti = pd.TableInfo;

            if (ti.TableName.Contains("."))
            {
                return(ti.TableName);
            }
            var tag       = ti.FixTag;
            var tableName = ti.TableName;

            var name = tn.Get(tag);

            if (name != null)
            {
                tableName = name.TablePrefix + tableName + name.TableSuffix;
            }
            var schemaName = ti.SchemaName;

            if (string.IsNullOrEmpty(schemaName))
            {
                return(this.EscapeSqlIdentifier(tableName));
            }
            return(string.Format("[{0}_{1}]", schemaName, tableName));
        }
Exemplo n.º 2
0
        private void initSqlHelper(string _providerName)
        {
            _cacheService    = new MemoryCacheService();
            _events          = new SqlEvents();
            _tableNameManger = new TableNameManger();
            _sqlConfig       = new SqlConfig(this);
            _sql             = new SqlRecord();
            _sqlMonitor      = new NullSqlMonitor();
            _sql.SqlMonitor  = _sqlMonitor;


            _connectionType = ConnectionType.Default;

            if (_providerName != null)
            {
                _sqlType = SqlConfig.GetSqlType(_providerName, _writeConnectionString);
                var _provider = DatabaseProvider.Resolve(_sqlType);
                _factory = _provider.GetFactory();
            }
            else
            {
                _sqlType = SqlConfig.GetSqlType(_factory.GetType().FullName, _writeConnectionString);
            }

            _provider = DatabaseProvider.Resolve(_sqlType);
        }
Exemplo n.º 3
0
        public virtual string EscapeTableName(PocoData pd, TableNameManger tn)
        {
            var ti    = pd.TableInfo;
            var index = ti.TableName.IndexOf('.');

            if (index > -1)
            {
                return(ti.TableName.Substring(index));
            }
            var tag       = ti.FixTag;
            var tableName = ti.TableName;

            var name = tn.Get(tag);

            if (name != null)
            {
                tableName = name.TablePrefix + tableName + name.TableSuffix;
            }
            return(EscapeSqlIdentifier(tableName));
        }
Exemplo n.º 4
0
        public virtual string GetTableName(Table ti, TableNameManger _tableNameManger)
        {
            if (ti.TableName.Contains("."))
            {
                return(ti.TableName);
            }
            var tag       = ti.FixTag;
            var tableName = ti.TableName;

            var name = _tableNameManger.Get(tag);

            if (name != null)
            {
                tableName = name.TablePrefix + tableName + name.TableSuffix;
            }
            var schemaName = ti.SchemaName;

            if (string.IsNullOrEmpty(schemaName))
            {
                return(provider.EscapeSqlIdentifier(tableName));
            }
            return(string.Format("{0}.{1}", provider.EscapeSqlIdentifier(schemaName), provider.EscapeSqlIdentifier(tableName)));
        }
Exemplo n.º 5
0
        public static string AddSelectClause <T>(DatabaseProvider DatabaseType, string sql, TableNameManger manger)
        {
            if (sql.StartsWith(";"))
            {
                return(sql.Substring(1));
            }
            if (rxSelect.IsMatch(sql))
            {
                return(sql);
            }

            var type          = typeof(T);
            var selectHeaders = selectClause.Get(Tuple.Create(type, DatabaseType), () => {
                var pd        = PocoData.ForType(typeof(T));
                var tableName = DatabaseType.EscapeTableName(pd.TableInfo.TableName);

                StringBuilder sb = new StringBuilder();
                foreach (var col in pd.Columns)
                {
                    if (sb.Length > 0)
                    {
                        sb.Append(",");
                    }

                    if (col.ResultColumn && string.IsNullOrEmpty(col.ResultSql) == false)
                    {
                        sb.AppendFormat(col.ResultSql, tableName + ".");
                        sb.Append(" AS '");
                        sb.Append(col.ColumnName);
                        sb.Append("'");
                    }
                    else
                    {
                        sb.Append(tableName);
                        sb.Append(".");
                        sb.Append(DatabaseType.EscapeSqlIdentifier(col.ColumnName));
                    }
                }
                if (sb.Length == 0)
                {
                    sb.Append("NULL");
                }
                sb.Insert(0, "SELECT ");

                return(sb.ToString());
            });

            StringBuilder s = new StringBuilder();

            s.Append(selectHeaders);

            if (!rxFrom.IsMatch(sql))
            {
                s.Append(" FROM ");
                var tableName2 = DatabaseType.EscapeTableName(PocoData.ForType(typeof(T)).TableInfo.TableName);
                s.Append(tableName2);
            }
            s.Append(" ");
            s.Append(sql);
            return(s.ToString());
        }
Exemplo n.º 6
0
        //private static Cache<List<Type>, List<SelectHeader>> SelectDict = new Cache<List<Type>, List<SelectHeader>>();

        public static string GetSelectCount <T>(DatabaseProvider DatabaseType, string sql, TableNameManger manger)
        {
            if (sql.StartsWith(";"))
            {
                return(sql.Substring(1));
            }
            if (rxSelect.IsMatch(sql))
            {
                return(sql);
            }

            if (rxFrom.IsMatch(sql))
            {
                return("SELECT Count(1) " + sql);// string.Format("SELECT Count(1) {1}", cols, sql);
            }

            var pd            = PocoData.ForType(typeof(T));
            var fullTableName = DatabaseType.GetTableName(pd, manger);

            return(string.Format("SELECT Count(1) FROM {0} {1}", fullTableName, sql));
        }