From 281cee95133cf18b45b5ea2431960e5451bc6404 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 25 Sep 2023 18:07:05 +0800 Subject: [PATCH] Synchronization code --- .../QueryableProvider/QueryableHelper.cs | 1 + .../QueryableProvider/QueryableProvider.cs | 5 ++++ .../QueryableProvider02-05.cs | 20 +++++++++++++++ .../QueryableProvider06-10.cs | 25 +++++++++++++++++++ .../QueryableProvider11-12.cs | 10 ++++++++ .../SqlBuilderProvider/QueryBuilder.cs | 15 +++++++++++ Src/Asp.Net/SqlSugar/Interface/IQueryable.cs | 12 +++++++++ 7 files changed, 88 insertions(+) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs index ac1721b07..9771e14fd 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs @@ -1996,6 +1996,7 @@ namespace SqlSugar asyncQueryableBuilder.AppendColumns = this.Context.Utilities.TranslateCopy(this.QueryBuilder.AppendColumns); asyncQueryableBuilder.AppendValues = this.Context.Utilities.TranslateCopy(this.QueryBuilder.AppendValues); asyncQueryableBuilder.RemoveFilters = this.QueryBuilder.RemoveFilters?.ToArray(); + asyncQueryableBuilder.Hints = this.QueryBuilder.Hints; if (this.QueryBuilder.AppendNavInfo != null) { asyncQueryableBuilder.AppendNavInfo = new AppendNavInfo() diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 8d93304cd..39b87a542 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -324,6 +324,11 @@ namespace SqlSugar ((QueryableProvider)queryable).Mappers = this.Mappers; return queryable; } + public ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public virtual ISugarQueryable AS(string tableName) { var entityName = typeof(T2).Name; diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs index 3f9585468..992ae6d12 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider02-05.cs @@ -16,6 +16,11 @@ namespace SqlSugar #region T2 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -663,6 +668,11 @@ namespace SqlSugar #region T3 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -1416,6 +1426,11 @@ namespace SqlSugar #region T4 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -2190,6 +2205,11 @@ namespace SqlSugar #region T5 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider06-10.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider06-10.cs index 0f07e1c2f..fc6a0504f 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider06-10.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider06-10.cs @@ -15,6 +15,11 @@ namespace SqlSugar #region T6 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -799,6 +804,11 @@ namespace SqlSugar #region T7 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -1593,6 +1603,11 @@ namespace SqlSugar #region T8 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -2323,6 +2338,11 @@ namespace SqlSugar #region T9 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -3013,6 +3033,11 @@ namespace SqlSugar #region T10 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider11-12.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider11-12.cs index bdcf1448c..401b2dab7 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider11-12.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider11-12.cs @@ -15,6 +15,11 @@ namespace SqlSugar #region T11 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); @@ -738,6 +743,11 @@ namespace SqlSugar #region T12 public partial class QueryableProvider : QueryableProvider, ISugarQueryable { + public new ISugarQueryable Hints(string hints) + { + this.QueryBuilder.Hints = hints; + return this; + } public new ISugarQueryable OrderByPropertyName(string orderPropertyName, OrderByType? orderByType = null) { base.OrderByPropertyName(orderPropertyName, orderByType); diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index 2d6428209..c1bca6857 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -34,6 +34,7 @@ namespace SqlSugar #endregion #region Splicing basic + public string Hints { get; set; } internal AppendNavInfo AppendNavInfo { get; set; } public Type[] RemoveFilters { get; set; } public Dictionary SubToListParameters { get; set; } @@ -689,6 +690,10 @@ namespace SqlSugar } public string GetSqlQuerySql(string result) { + if (this.Hints.HasValue()) + { + result = ReplaceHints(result); + } if (GetTableNameString == " (-- No table ) t ") { result = "-- No table "; @@ -707,6 +712,16 @@ namespace SqlSugar return result; } } + + protected virtual string ReplaceHints(string result) + { + result = Regex.Replace(result, "^SELECT ", it => + { + return $"{it} {Hints} "; + }); + return result; + } + protected string SubToListMethod(string result) { string oldResult = result; diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index cdd875fe9..cedc0be92 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -17,6 +17,7 @@ namespace SqlSugar bool IsCache { get; set; } int CacheTime { get; set; } ISugarQueryable Clone(); + ISugarQueryable Hints(string hints); ISugarQueryable AS(string tableName); ISugarQueryable AS(string tableName); ISugarQueryable AsWithAttr(); @@ -287,6 +288,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); new ISugarQueryable SampleBy(int timeNumber, SampleByUnit timeType); new ISugarQueryable SampleBy(int timeNumber, string timeType); ISugarQueryable SelectMergeTable(Expression> expression); @@ -412,6 +414,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); new ISugarQueryable SampleBy(int timeNumber, SampleByUnit timeType); new ISugarQueryable SampleBy(int timeNumber, string timeType); ISugarQueryable SelectMergeTable(Expression> expression); @@ -552,6 +555,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); new ISugarQueryable SampleBy(int timeNumber, SampleByUnit timeType); new ISugarQueryable SampleBy(int timeNumber, string timeType); ISugarQueryable SelectMergeTable(Expression> expression); @@ -698,6 +702,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); new ISugarQueryable SampleBy(int timeNumber, SampleByUnit timeType); new ISugarQueryable SampleBy(int timeNumber, string timeType); ISugarQueryable SelectMergeTable(Expression> expression); @@ -840,6 +845,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); ISugarQueryable SelectMergeTable(Expression> expression); ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable InnerJoinIF(bool isJoin, Expression> joinExpression); @@ -989,6 +995,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); ISugarQueryable SelectMergeTable(Expression> expression); ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable InnerJoinIF(bool isJoin, Expression> joinExpression); @@ -1133,6 +1140,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); ISugarQueryable SelectMergeTable(Expression> expression); ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable InnerJoinIF(bool isJoin, Expression> joinExpression); @@ -1278,6 +1286,7 @@ namespace SqlSugar #region 9-12 public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); ISugarQueryable SelectMergeTable(Expression> expression); ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable InnerJoinIF(bool isJoin, Expression> joinExpression); @@ -1403,6 +1412,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); ISugarQueryable SelectMergeTable(Expression> expression); ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable InnerJoinIF(bool isJoin, Expression> joinExpression); @@ -1536,6 +1546,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); ISugarQueryable SelectMergeTable(Expression> expression); ISugarQueryable LeftJoinIF(bool isLeftJoin, Expression> joinExpression); ISugarQueryable InnerJoinIF(bool isJoin, Expression> joinExpression); @@ -1673,6 +1684,7 @@ namespace SqlSugar } public partial interface ISugarQueryable : ISugarQueryable { + new ISugarQueryable Hints(string hints); ISugarQueryable SelectMergeTable(Expression> expression); #region Where new ISugarQueryable Where(string expShortName, FormattableString expressionString);