src/02_Data/Data.Core/SqlBuilder/GroupBySqlBuilder.cs

(开头部分) 16KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Linq.Expressions;
#if DEBUG
using System.Runtime.CompilerServices;
#endif
using System.Text;
using Mkh.Data.Abstractions.Adapter;
using Mkh.Data.Abstractions.Pagination;
using Mkh.Data.Abstractions.Queryable;
using Mkh.Data.Core.Internal;
using Mkh.Data.Core.Internal.QueryStructure;

#if DEBUG
[assembly: InternalsVisibleTo("Data.Adapter.MySql.Test")]
[assembly: InternalsVisibleTo("Data.Adapter.SqlServer.Test")]
#endif
namespace Mkh.Data.Core.SqlBuilder
{
    /// <summary>
    /// 分组SQL生成器
    /// </summary>
    internal class GroupBySqlBuilder
    {
        private readonly QueryBody _queryBody;
        private readonly IDbAdapter _dbAdapter;

        public GroupBySqlBuilder(QueryBody queryBody)
        {
            _queryBody = queryBody;
            _dbAdapter = queryBody.Repository.DbContext.Adapter;
        }

        #region ==BuildListSql==

        public string BuildListSql(out IQueryParameters parameters)
        {
            parameters = new QueryParameters();
            return BuildListSql(parameters);
        }

        /// <summary>
        /// 生成列表语句
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public string BuildListSql(IQueryParameters parameters)
        {
            var sqlBuilder = new StringBuilder();
            sqlBuilder.Append("SELECT ");
            ResolveSelect(sqlBuilder);
            sqlBuilder.Append(" FROM ");
            ExpressionResolver.ResolveFrom(_queryBody, sqlBuilder, parameters);
            sqlBuilder.Append(" ");
            ExpressionResolver.ResolveWhere(_queryBody, sqlBuilder, parameters);
            ResolveGroupBy(sqlBuilder);
            ResolveHaving(sqlBuilder, parameters);
            ResolveSort(sqlBuilder);

            return sqlBuilder.ToString();
        }
后面还有 373 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。