From 8b8b7f61271a46dba5eed3becf6dc52cb0f4074a Mon Sep 17 00:00:00 2001
From: sunkaixuan <610262374@qq.com>
Date: Tue, 3 Jun 2025 20:03:23 +0800
Subject: [PATCH] Synchronous code
---
.../Abstract/AdoProvider/AdoProvider.cs | 6 +-
.../Abstract/DbMaintenanceProvider/Methods.cs | 2 +-
.../FastestProvider/FastestProvider.cs | 4 +
.../Abstract/FastestProvider/Private.cs | 4 +
.../QueryableProvider/Entities/SqlInfo.cs | 1 +
.../QueryableProvider/NavigatManager.cs | 19 ++++
.../QueryableProvider/QueryableProvider.cs | 1 +
.../SqlBuilderProvider/QueryBuilder.cs | 1 +
.../SqlBuilderProvider_Condition.cs | 1 +
.../SqlSugar/Entities/DbFastestProperties.cs | 2 +
.../ExpressionsToSql/Common/ExpressionTool.cs | 26 ++++++
.../Common/MethodCallExpressionModel.cs | 1 +
.../DbMethods/DefaultDbMethod.cs | 33 +++++++
.../ExpressionsToSql/DbMethods/IDbMethods.cs | 1 +
.../ExpressionsToSql/DbMethods/SqlFunc.cs | 5 +-
.../ResolveItems/BaseResolve_Item.cs | 34 ++++++-
.../MethodCallExpressionResolve_Helper.cs | 18 +++-
.../ResolveItems/NewExpressionResolve.cs | 13 +++
.../OneToManyNavgateExpressionN.cs | 8 +-
.../Subquery/Items/SubTake.cs | 93 +++++++++++++++++++
.../ExpressionsToSql/Subquery/SubResolve.cs | 4 +
.../ExpressionsToSql/Subquery/SubTools.cs | 3 +-
.../ExpressionsToSql/Subquery/Subquerable.cs | 5 +
.../Subquery/SubqueryableN.cs | 33 +++++++
.../SqlSugar/Infrastructure/ContextMethods.cs | 17 +++-
Src/Asp.Net/SqlSugar/Interface/IAdo.cs | 1 +
Src/Asp.Net/SqlSugar/SqlSugar.csproj | 1 +
Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs | 57 +++++++++++-
28 files changed, 378 insertions(+), 16 deletions(-)
create mode 100644 Src/Asp.Net/SqlSugar/ExpressionsToSql/Subquery/Items/SubTake.cs
diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs
index 414c4f617..a74580adb 100644
--- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs
+++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs
@@ -46,7 +46,8 @@ namespace SqlSugar
///
/// Add, delete and modify: the number of affected items;
///
- public int SqlExecuteCount { get; private set; } = 0;
+ public int SqlExecuteCount { get; protected set; } = 0;
+ public SugarActionType SqlExecuteType { get=> this.Context.SugarActionType;}
public StackTraceInfo SqlStackTrace { get { return UtilMethods.GetStackTrace(); } }
public bool IsDisableMasterSlaveSeparation { get; set; }
internal DateTime BeforeTime = DateTime.MinValue;
@@ -1726,6 +1727,9 @@ namespace SqlSugar
}
protected void InitParameters(ref string sql, SugarParameter[] parameters)
{
+ this.SqlExecuteCount = 0;
+ this.BeforeTime = DateTime.MinValue;
+ this.AfterTime = DateTime.MinValue;
if (parameters.HasValue())
{
foreach (var item in parameters)
diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs
index 4239e0051..b8e103634 100644
--- a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs
+++ b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs
@@ -246,7 +246,7 @@ namespace SqlSugar
{
indexName = this.SqlBuilder.GetNoTranslationColumnName(indexName);
tableName= this.SqlBuilder.GetNoTranslationColumnName(tableName);
- this.Context.Ado.ExecuteCommand($" DROP INDEX {indexName} ON {tableName}");
+ this.Context.Ado.ExecuteCommand($" DROP INDEX {indexName} ");
return true;
}
public virtual bool DropView(string viewName)
diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs
index 4ed1956f3..88c896f19 100644
--- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs
+++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastestProvider.cs
@@ -61,6 +61,10 @@ namespace SqlSugar
{
if (Size > 0)
{
+ if (this.GetBuider()?.DbFastestProperties?.NoPage == true)
+ {
+ Size = int.MaxValue;
+ }
int resul=0;
await this.context.Utilities.PageEachAsync(datas, Size, async item =>
{
diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs
index c52e394df..d8fdfe960 100644
--- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs
+++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs
@@ -226,6 +226,10 @@ namespace SqlSugar
private DataTable GetCopyWriteDataTable(DataTable dt)
{
var builder = GetBuider();
+ if (builder.DbFastestProperties?.IsConvertDateTimeOffsetToDateTime == true)
+ {
+ dt = UtilMethods.ConvertDateTimeOffsetToDateTime(dt);
+ }
if (builder.DbFastestProperties?.IsNoCopyDataTable == true)
{
return dt;
diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/Entities/SqlInfo.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/Entities/SqlInfo.cs
index 09c6d6f88..94e67733d 100644
--- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/Entities/SqlInfo.cs
+++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/Entities/SqlInfo.cs
@@ -9,6 +9,7 @@ namespace SqlSugar
internal class SqlInfo
{
+ public bool IsSelectNav { get; set; }
public int? Take { get; set; }
public int? Skip { get; set; }
public string WhereString { get; set; }
diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs
index 4ffc96486..367c6a7d5 100644
--- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs
+++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs
@@ -856,6 +856,18 @@ namespace SqlSugar
{
var pkInfo = entityInfo.Columns.FirstOrDefault(x => x.IsPrimarykey);
result.SelectString = (" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.SelectSingle).GetString());
+ if (ExpressionTool.ContainsTwoLevelAccess(exp))
+ {
+ var shortName = ExpressionTool.GetParameters(exp).FirstOrDefault()?.Name;
+ if (shortName.HasValue())
+ {
+ if (result.TableShortName == null)
+ {
+ result.TableShortName = shortName;
+ result.IsSelectNav = true;
+ }
+ }
+ }
if (pkInfo != null)
{
var pkName = pkInfo.DbColumnName;
@@ -941,6 +953,13 @@ namespace SqlSugar
private static void AppColumns(SqlInfo result, ISugarQueryable