/// <summary>
        /// 创建 SQL 命令
        /// </summary>
        /// <param name="query">查询 语句</param>
        /// <returns></returns>
        public CommandDefine Parse <T>(IDbQueryable <T> query)
        {
            IDbQueryableInfo <T> info = DbQueryParser.Parse(query);

            DbQueryableInfo_Select <T> qQuery = info as DbQueryableInfo_Select <T>;

            if (qQuery != null)
            {
                return(this.ParseSelectCommand <T>(qQuery));
            }

            DbQueryableInfo_Insert <T> qInsert = info as DbQueryableInfo_Insert <T>;

            if (qInsert != null)
            {
                return(this.ParseInsertCommand <T>(qInsert));
            }

            DbQueryableInfo_Update <T> qUpdate = info as DbQueryableInfo_Update <T>;

            if (qUpdate != null)
            {
                return(this.ParseUpdateCommand <T>(qUpdate));
            }

            DbQueryableInfo_Delete <T> qDelete = info as DbQueryableInfo_Delete <T>;

            if (qDelete != null)
            {
                return(this.ParseDeleteCommand <T>(qDelete));
            }

            throw new NotImplementedException();
        }
        /// <summary>
        /// 创建 SQL 命令
        /// </summary>
        /// <param name="dbQuery">查询 语句</param>
        /// <param name="indent">缩进</param>
        /// <param name="isOuter">是否最外层,内层查询不需要结束符(;)</param>
        /// <param name="token">解析上下文参数</param>
        /// <returns></returns>
        public RawCommand Resolve <T>(IDbQueryable <T> dbQuery, int indent, bool isOuter, ResolveToken token)
        {
            // 参数化设置
            if (token == null)
            {
                token = new ResolveToken();
            }
            if (!dbQuery.HasSetParameterized)
            {
                dbQuery.Parameterized = true;
            }
            if (!token.HasSetParameterized)
            {
                token.Parameterized = dbQuery.Parameterized;
            }
            if (token.Parameterized && token.Parameters == null)
            {
                token.Parameters = new List <IDbDataParameter>(8);
            }
            if (token.DbContext == null)
            {
                token.DbContext = dbQuery.DbContext;
            }

            // 解析查询语义
            IDbQueryableInfo result = DbQueryParser.Parse <T>(dbQuery);
            // 查询
            var result_Query = result as IDbQueryableInfo_Select;

            if (result_Query != null)
            {
                return(this.ResolveSelectCommand(result_Query, indent, isOuter, token));
            }
            // 新增
            var result_Insert = result as IDbQueryableInfo_Insert;

            if (result_Insert != null)
            {
                return(this.ResolveInsertCommand <T>(result_Insert, token));
            }
            // 更新
            var result_Update = result as IDbQueryableInfo_Update;

            if (result_Update != null)
            {
                return(this.ResolveUpdateCommand <T>(result_Update, token));
            }
            // 删除
            var result_Delete = result as IDbQueryableInfo_Delete;

            if (result_Delete != null)
            {
                return(this.ResolveDeleteCommand <T>(result_Delete, token));
            }

            throw new NotImplementedException();
        }
Beispiel #3
0
        /// <summary>
        /// 创建 SQL 命令
        /// </summary>
        /// <param name="dbQueryable">查询 语句</param>
        /// <param name="indent">缩进</param>
        /// <param name="isOuter">是否最外层,内层查询不需要结束符(;)</param>
        /// <param name="token">解析上下文参数</param>
        /// <returns></returns>
        public Command Resolve <T>(IDbQueryable <T> dbQueryable, int indent, bool isOuter, ResolveToken token)
        {
            // 设置该查询是否需要参数化
            if (token == null)
            {
                token = new ResolveToken();
            }
            if (!((DbQueryable)dbQueryable).HasSetParameterized)
            {
                dbQueryable.Parameterized = true;
            }
            if (dbQueryable.Parameterized && token.Parameters == null)
            {
                token.Parameters = new List <IDbDataParameter>(8);
            }

            // 调试模式
            if (token != null && !token.HasSetIsDebug)
            {
                token.IsDebug = dbQueryable.DbContext.IsDebug;
            }

            // 解析查询语义
            IDbQueryableInfo <T> dbQueryInfo = DbQueryParser.Parse(dbQueryable);

            DbQueryableInfo_Select <T> sQueryInfo = dbQueryInfo as DbQueryableInfo_Select <T>;

            if (sQueryInfo != null)
            {
                return(this.ParseSelectCommand <T>(sQueryInfo, indent, isOuter, token));
            }

            DbQueryableInfo_Insert <T> nQueryInfo = dbQueryInfo as DbQueryableInfo_Insert <T>;

            if (nQueryInfo != null)
            {
                return(this.ParseInsertCommand <T>(nQueryInfo, token));
            }

            DbQueryableInfo_Update <T> uQueryInfo = dbQueryInfo as DbQueryableInfo_Update <T>;

            if (uQueryInfo != null)
            {
                return(this.ParseUpdateCommand <T>(uQueryInfo, token));
            }

            DbQueryableInfo_Delete <T> dQueryInfo = dbQueryInfo as DbQueryableInfo_Delete <T>;

            if (dQueryInfo != null)
            {
                return(this.ParseDeleteCommand <T>(dQueryInfo, token));
            }

            throw new NotImplementedException();
        }
        /// <summary>
        /// 创建 SQL 命令
        /// </summary>
        /// <param name="dbQuery">查询 语句</param>
        /// <param name="indent">缩进</param>
        /// <param name="isOuter">是否最外层,内层查询不需要结束符(;)</param>
        /// <param name="token">解析上下文参数</param>
        /// <returns></returns>
        public Command Resolve <T>(IDbQueryable <T> dbQuery, int indent, bool isOuter, ResolveToken token)
        {
            // 设置该查询是否需要参数化
            if (token == null)
            {
                token = new ResolveToken();
            }
            if (!((DbQueryable)dbQuery).HasSetParameterized)
            {
                dbQuery.Parameterized = true;
            }
            if (dbQuery.Parameterized && token.Parameters == null)
            {
                token.Parameters = new List <IDbDataParameter>(8);
            }

            // 调试模式
            if (token != null && !token.HasSetIsDebug)
            {
                token.IsDebug = dbQuery.DbContext.IsDebug;
            }

            // 解析查询语义
            IDbQueryableInfo <T> result = DbQueryParser.Parse(dbQuery);
            // 查询
            DbQueryableInfo_Select <T> result_Query = result as DbQueryableInfo_Select <T>;

            if (result_Query != null)
            {
                return(this.ResolveSelectCommand <T>(result_Query, indent, isOuter, token));
            }
            // 新增
            DbQueryableInfo_Insert <T> result_Insert = result as DbQueryableInfo_Insert <T>;

            if (result_Insert != null)
            {
                return(this.ResolveInsertCommand <T>(result_Insert, token));
            }
            // 更新
            DbQueryableInfo_Update <T> result_Update = result as DbQueryableInfo_Update <T>;

            if (result_Update != null)
            {
                return(this.ResolveUpdateCommand <T>(result_Update, token));
            }
            // 删除
            DbQueryableInfo_Delete <T> result_Delete = result as DbQueryableInfo_Delete <T>;

            if (result_Delete != null)
            {
                return(this.ResolveDeleteCommand <T>(result_Delete, token));
            }

            throw new NotImplementedException();
        }
Beispiel #5
0
        /// <summary>
        /// 创建 SQL 命令
        /// </summary>
        /// <param name="dbQueryable">查询 语句</param>
        /// <param name="indent">缩进</param>
        /// <param name="isOuter">是否最外层,内层查询不需要结束符(;)</param>
        /// <param name="parameters">已存在的参数列表</param>
        /// <returns></returns>
        public DbCommandDefinition Resolve <T>(IDbQueryable <T> dbQueryable, int indent = 0, bool isOuter = true, List <IDbDataParameter> parameters = null)
        {
            // 设置该查询是否需要参数化
            if (!((DbQueryable)dbQueryable).HasSetParameterized)
            {
                dbQueryable.Parameterized = true;
            }
            if (dbQueryable.Parameterized && parameters == null)
            {
                parameters = new List <IDbDataParameter>(8);
            }

            // 解析查询语义
            IDbQueryableInfo <T> info = DbQueryParser.Parse(dbQueryable);

            DbQueryableInfo_Select <T> sQuery = info as DbQueryableInfo_Select <T>;

            if (sQuery != null)
            {
                return(this.ParseSelectCommand <T>(sQuery, indent, isOuter, dbQueryable.Parameterized ? parameters : null));
            }

            DbQueryableInfo_Insert <T> nQuery = info as DbQueryableInfo_Insert <T>;

            if (nQuery != null)
            {
                return(this.ParseInsertCommand <T>(nQuery, dbQueryable.Parameterized ? parameters : null));
            }

            DbQueryableInfo_Update <T> uQuery = info as DbQueryableInfo_Update <T>;

            if (uQuery != null)
            {
                return(this.ParseUpdateCommand <T>(uQuery, dbQueryable.Parameterized ? parameters : null));
            }

            DbQueryableInfo_Delete <T> dQuery = info as DbQueryableInfo_Delete <T>;

            if (dQuery != null)
            {
                return(this.ParseDeleteCommand <T>(dQuery, dbQueryable.Parameterized ? parameters : null));
            }

            throw new NotImplementedException();
        }