我的GraphQlSql设计 动态执行sql

     public class GraphQlSql
    {
        /// <summary>
        /// 主表
        /// </summary>
        public string MainTableName { get; set; }

        /// <summary>
        /// 主查询条件
        /// </summary>
      

     public   List<WhereCondition> Wheres { get; set; }
        
        /// <summary>
        /// 表关联
        /// </summary>
        
     public    List<TableRef> TableRefs { get; set; }
        
        public List<Fileds> SelectFields { get; set; }

        /// <summary>
        /// 分页索引 1开始 默认1
        /// </summary>

        public int PageIndex { get; set; } = 1;

        /// <summary>
        /// 分页大小  默认10
        /// </summary>
        public int PageSize { get; set; } = 10;

    }
/// <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; }
    }

posted @   过错  阅读(274)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示