public AbstractMetaManipulate(IDbLayer dbLayer, IDbGateConfig config)
 {
     DBLayer                     = dbLayer;
     Config                      = config;
     ColumnTypeMapItems          = new List <ColumnTypeMapItem>();
     ReferentialRuleTypeMapItems = new List <ReferentialRuleTypeMapItem>();
 }
Exemple #2
0
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            String alias = "union_src_" + Guid.NewGuid().ToString().Substring(0, 5);

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("(");
            for (int i = 0, queriesLength = Queries.Length; i < queriesLength; i++)
            {
                ISelectionQuery query  = Queries[i];
                QueryBuildInfo  result = dbLayer.DataManipulate().ProcessQuery(buildInfo, query.Structure);
                if (i > 0)
                {
                    sqlBuilder.Append(" UNION ");
                    if (All)
                    {
                        sqlBuilder.Append(" ALL ");
                    }
                }
                sqlBuilder.Append(result.ExecInfo.Sql + " union_src_" + i);
            }

            sqlBuilder.Append(") ").Append(alias);
            buildInfo.AddUnionAlias(alias);

            return(sqlBuilder.ToString());
        }
Exemple #3
0
 public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
 {
     if (Expr == null)
     {
         CreateJoinExpressionForDefinedRelation(buildInfo);
     }
     return(CreateSqlForExpression(dbLayer, buildInfo));
 }
        private void ProcessQueryValues(StringBuilder sb, CompareSegment segment, QueryBuildInfo buildInfo,
                                        IDbLayer dbLayer)
        {
            sb.Append(" IN ");
            var querySegment = (QuerySegment)segment.Right;

            ProcessQuery(sb, querySegment, buildInfo, dbLayer);
        }
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            var aliases = buildInfo.GetAlias(EntityType);

            if (!string.IsNullOrEmpty(aliases))
            {
                return(aliases + ".*");
            }
            return("*");
        }
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            ISegment rootSegment = Expr.RootSegment;

            switch (rootSegment.SegmentType)
            {
            case SegmentType.Field:
                return(_processor.GetFieldName((FieldSegment)rootSegment, false, buildInfo));
            }
            return(null);
        }
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            QueryBuildInfo result = dbLayer.DataManipulate().ProcessQuery(buildInfo, Query.Structure);
            string         sql    = "(" + result.ExecInfo.Sql + ")";

            if (!string.IsNullOrEmpty(Alias))
            {
                sql = sql + " as " + Alias;
                buildInfo.AddQueryAlias(Alias, Query);
            }
            return(sql);
        }
Exemple #8
0
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            EntityInfo entityInfo = CacheManager.GetEntityInfo(EntityType);
            string     sql        = entityInfo.TableInfo.TableName;

            if (!string.IsNullOrEmpty(Alias))
            {
                sql = sql + " as " + Alias;
                buildInfo.AddTypeAlias(Alias, EntityType);
            }
            return(sql);
        }
Exemple #9
0
        public DbGate(int dbType)
        {
            _config     = new DbGateConfig();
            _statistics = new DbGateStatistics();
            InitializeDefaults();

            IDbLayer dbLayer = LayerFactory.CreateLayer(dbType, _config);

            CacheManager.Init(_config);
            _persistRetrievalLayer = new PersistRetrievalLayer(dbLayer, _statistics, _config);
            _dataMigrationLayer    = new DataMigrationLayer(dbLayer, _statistics, _config);
            dbLayer.DataManipulate();
        }
Exemple #10
0
        private String CreateSqlForExpression(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            var from = new AbstractTypeFrom();

            from.EntityType = TypeTo;
            from.Alias      = TypeToAlias;

            var sb = new StringBuilder();

            AppendJoinTypeSql(sb);
            sb.Append(from.CreateSql(dbLayer, buildInfo));
            sb.Append(" ON ");
            processor.Process(sb, Expr.RootSegment, buildInfo, dbLayer);
            return(sb.ToString());
        }
Exemple #11
0
        public string GetRelationObjectLoad(IDbLayer dbLayer, IRelation relation)
        {
            string queryId = relation.RelationShipName + "_" + relation.RelatedObjectType.FullName;
            string query   = GetQuery(queryId);

            if (query == null)
            {
                query = dbLayer.DataManipulate().CreateRelatedObjectsLoadQuery(relation);
                SetQuery(queryId, query);
            }
            if (query == null)
            {
                throw new QueryBuildingException(String.Format("Child loading Query building failed for table {0} class {1} child object type {2}", TableInfo, EntityType.FullName, relation.RelatedObjectType.FullName));
            }
            return(query);
        }
Exemple #12
0
        public string GetDeleteQuery(IDbLayer dbLayer)
        {
            const string queryId = "DELETE";
            string       query   = GetQuery(queryId);

            if (query == null)
            {
                PopulateRelationColumns();
                query = dbLayer.DataManipulate().CreateDeleteQuery(TableInfo.TableName, Columns);
                SetQuery(queryId, query);
            }
            if (query == null)
            {
                throw new QueryBuildingException(String.Format("Delete Query building failed for table {0} class {1}", TableInfo, EntityType.FullName));
            }
            return(query);
        }
Exemple #13
0
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            ISegment rootSegment = Expr.RootSegment;

            switch (rootSegment.SegmentType)
            {
            case SegmentType.Group:
                return(_processor.GetGroupFunction((GroupFunctionSegment)rootSegment, true, buildInfo));

            case SegmentType.Field:
                return(_processor.GetFieldName((FieldSegment)rootSegment, true, buildInfo));

            case SegmentType.Query:
                var querySegment = (QuerySegment)rootSegment;
                buildInfo = dbLayer.DataManipulate().ProcessQuery(buildInfo, querySegment.Query.Structure);
                return("(" + buildInfo.ExecInfo.Sql + ") as " + querySegment.Alias);
            }
            return(null);
        }
Exemple #14
0
        public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
        {
            ISegment rootSegment = Expr.RootSegment;

            switch (rootSegment.SegmentType)
            {
            case SegmentType.Field:
                String sql = _processor.GetFieldName((FieldSegment)rootSegment, false, buildInfo);
                switch (OrderType)
                {
                case QueryOrderType.Ascend:
                    sql += " ASC";
                    break;

                case QueryOrderType.Descend:
                    sql += " DESC";
                    break;
                }
                return(sql);
            }
            return(null);
        }
Exemple #15
0
 public SqlLiteMetaManipulate(IDbLayer dbLayer, IDbGateConfig config) : base(dbLayer, config)
 {
 }
Exemple #16
0
 public PersistRetrievalLayer(IDbLayer dbLayer, IDbGateStatistics statistics, IDbGateConfig config)
 {
     _retrievalOperationLayer = new RetrievalOperationLayer(dbLayer, statistics, config);
     _persistOperationLayer   = new PersistOperationLayer(dbLayer, statistics, config);
 }
 public PaymentsController(IDbLayer context)
 {
     _context = context;
 }
 public ClientsController(IDbLayer context)
 {
     _context = context;
 }
        public string Process(StringBuilder sb, ISegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer)
        {
            if (sb == null)
            {
                sb = new StringBuilder();
            }
            switch (segment.SegmentType)
            {
            case SegmentType.Field:
                ProcessField(sb, (FieldSegment)segment, buildInfo);
                break;

            case SegmentType.Group:
                ProcessGroup(sb, (GroupFunctionSegment)segment, buildInfo);
                break;

            case SegmentType.Value:
                ProcessValue(sb, (ValueSegment)segment, buildInfo);
                break;

            case SegmentType.Compare:
                ProcessCompare(sb, (CompareSegment)segment, buildInfo, dbLayer);
                break;

            case SegmentType.Merge:
                ProcessMerge(sb, (MergeSegment)segment, buildInfo, dbLayer);
                break;

            case SegmentType.Query:
                ProcessQuery(sb, (QuerySegment)segment, buildInfo, dbLayer);
                break;
            }
            return(sb.ToString());
        }
        private void ProcessCompare(StringBuilder sb, CompareSegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer)
        {
            if (segment.Left != null)
            {
                Process(sb, segment.Left, buildInfo, dbLayer);
            }

            switch (segment.Mode)
            {
            case CompareSegmentMode.Between:
                ProcessBetween(sb, segment, buildInfo, dbLayer);
                return;

            case CompareSegmentMode.In:
                switch (segment.Right.SegmentType)
                {
                case SegmentType.Value:
                    ProcessInValues(sb, segment, buildInfo);
                    break;

                case SegmentType.Query:
                    ProcessQueryValues(sb, segment, buildInfo, dbLayer);
                    break;
                }
                return;

            case CompareSegmentMode.Exists:
                sb.Append(" EXISTS ");
                break;

            case CompareSegmentMode.NotExists:
                sb.Append(" NOT EXISTS ");
                break;

            case CompareSegmentMode.Eq:
                sb.Append(" = ");
                break;

            case CompareSegmentMode.Ge:
                sb.Append(" >= ");
                break;

            case CompareSegmentMode.Gt:
                sb.Append(" > ");
                break;

            case CompareSegmentMode.Le:
                sb.Append(" <= ");
                break;

            case CompareSegmentMode.Lt:
                sb.Append(" < ");
                break;

            case CompareSegmentMode.Like:
                sb.Append(" like ");
                break;

            case CompareSegmentMode.Neq:
                sb.Append(" <> ");
                break;

            default:
                break;
            }
            Process(sb, segment.Right, buildInfo, dbLayer);
        }
 private void ProcessQuery(StringBuilder sb, QuerySegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer)
 {
     buildInfo = dbLayer.DataManipulate().ProcessQuery(buildInfo, segment.Query.Structure);
     sb.Append(" ( ");
     sb.Append(buildInfo.ExecInfo.Sql);
     sb.Append(" ) ");
 }
 public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
 {
     return(_processor.Process(null, Expr.RootSegment, buildInfo, dbLayer));
 }
        private void ProcessBetween(StringBuilder sb, CompareSegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer)
        {
            sb.Append(" BETWEEN ? AND ? ");
            var valueSegment = (ValueSegment)segment.Right;

            object[] values = valueSegment.Values;
            for (int i = 0, valuesLength = 2; i < valuesLength; i++)
            {
                Object value = values[i];
                var    param = new QueryExecParam();
                param.Index = buildInfo.ExecInfo.Params.Count;
                param.Type  = valueSegment.Type;
                param.Value = value;
                buildInfo.ExecInfo.Params.Add(param);
            }
        }
Exemple #24
0
 public PlayersController(IDbLayer service)
 {
     _service = service;
 }
        private void ProcessMerge(StringBuilder sb, MergeSegment segment, QueryBuildInfo buildInfo, IDbLayer dbLayer)
        {
            int count = 0;

            if (segment.Mode == MergeSegmentMode.ParaAnd ||
                segment.Mode == MergeSegmentMode.ParaOr)
            {
                sb.Append("(");
            }
            foreach (ISegment subSegment in segment.Segments)
            {
                if (count > 0)
                {
                    switch (segment.Mode)
                    {
                    case MergeSegmentMode.And:
                    case MergeSegmentMode.ParaAnd:
                        sb.Append(" AND ");
                        break;

                    case MergeSegmentMode.ParaOr:
                    case MergeSegmentMode.Or:
                        sb.Append(" OR ");
                        break;
                    }
                }
                Process(sb, subSegment, buildInfo, dbLayer);
                count++;
            }
            if (segment.Mode == MergeSegmentMode.ParaAnd ||
                segment.Mode == MergeSegmentMode.ParaOr)
            {
                sb.Append(")");
            }
        }
 public AccessDataManipulate(IDbLayer dbLayer) : base(dbLayer)
 {
 }
 public RetrievalOperationLayer(IDbLayer dbLayer, IDbGateStatistics statistics, IDbGateConfig config)
     : base(dbLayer, statistics, config)
 {
     _proxyGenerator = new ProxyGenerator();
 }
Exemple #28
0
 public CarsController(IDbLayer context)
 {
     _context = context;
 }
 public string CreateSql(IDbLayer dbLayer, QueryBuildInfo buildInfo)
 {
     return(Sql);
 }
Exemple #30
0
 public DefaultDataManipulate(IDbLayer dbLayer) : base(dbLayer)
 {
 }