我的GraphQlSql設計 動態執行sql
阿新 • • 發佈:2021-08-02
/// <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]
聯絡我,非常感謝。