1. 程式人生 > 其它 >我的GraphQlSql設計 動態執行sql

我的GraphQlSql設計 動態執行sql

  /// <summary>
    /// 動態sql查詢類   可以為  select 1 from user left join role on user.id=role.userid where user.id>0 and role.id=user.roleid an roleid in (1,2,3,4)
    /// 不支援子查詢 slect 1 from user where id ( select roleid from role)  也不支援on多條件  如 on a.id=b.id and a.name=b.name
    /// </summary>
   public class GraphQlSql
    {
        /// <summary>
        /// 主表
        /// </summary>
        public string MainTableName { get; set; }

        /// <summary>
        /// 主查詢條件
        /// </summary>
      

        List<WhereCondition> Wheres { get; set; }
        
        /// <summary>
        /// 表關聯
        /// </summary>
        
         List<TableRef> TableRefs { get; set; }
        
        public List<Fileds> SelectFields { get; set; }
   
        /// <summary>
        /// 分頁索引 1開始 預設1
        /// </summary>

        public int PageIndex { get; set; }

        /// <summary>
        /// 分頁大小  預設10
        /// </summary>
        public int PageSize { get; set; }

    }
/// <summary>
/// 表關聯類
/// </summary>
    public class TableRef { 

        /// <summary>
        /// 連線方式  lefe join  right join 
        /// </summary>
        public string LinkType { get; set; }
        /// <summary>
        /// 連線的表名
        /// </summary>

        public string LinkTableName { get; set; }

        /// <summary>
        /// 表關聯on條件集合
        /// </summary>
        public List<OnCondition> OnConditions { get; set; }



    }
    /// <summary>
    /// 表關聯on條件集合
    /// </summary>
    public class OnCondition
    {

        /// <summary>
        /// 關聯的左表名
        /// </summary>
        public string LeftTableName { get; set; }
        /// <summary>
        /// 關聯的左表字段
        /// </summary>
        public string LeftTableField { get; set; }
        /// <summary>
        /// 關聯的右表名
        /// </summary>
        public string RightTableName { get; set; }

        /// <summary>
        /// 關聯的右表字段
        /// </summary>
        public string RightTableField { get; set; }


    }

    /// <summary>
    /// where條件類
    /// </summary>
    public class WhereCondition
    {



        /// <summary>
        /// 邏輯符號 如 and  or 
        /// </summary>
        public string LogicSymbol { get; set; }


        /// <summary>
        /// 關聯的左表名  如果是欄位間的比較,如 user.id=role.userid   則此值為user
        /// </summary>
        public string LeftTableName { get; set; }
        /// <summary>
        /// 關聯的左表字段  如果是欄位間的比較,如 user.id=role.userid   則此值為id
        /// </summary>
        public string LeftTableField { get; set; }


        /// <summary>
        /// 條件符號 如> = <
        /// </summary>
        public string ConditionSymbol { get; set; }

        /// <summary>
        /// 關聯的右表名    如果是欄位間的比較,如 user.id=role.userid   則此值為role
        /// </summary>
        public string RightTableName { get; set; }

        /// <summary>
        /// 關聯的右表字段 如果是欄位間的比較,如 user.id=role.userid   則此值為userid
        /// </summary>
        public string RightTableField { get; set; }

        /// <summary>
        /// 條件比較的值。如果不是欄位的比較 而是值幾個比較 用這個。 比如  id in (1,23,4)  則 此值為1,23,4
        /// </summary>
        public string ConditionValue { get; set; }



    }


    /// <summary>
    /// 要返回的欄位  暫時不支援聚合函式
    /// </summary>
    public class Fileds { 
        /// <summary>
        ///表名
        /// </summary>
        public string TableName { get; set; }
        /// <summary>
        /// 欄位名集合
        /// </summary>

        public List<string> Fields { get; set; }
    }


作者:過錯
出處:http://www.cnblogs.com/wang2650/
關於作者:net開發做的久而已。十餘年時光虛度!
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線。如有問題,可以郵件:[email protected]  聯絡我,非常感謝。