From 2dbc2ec2073899d888f308801af0fc08c2a1319e Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 19 Aug 2024 06:30:10 +0800 Subject: [PATCH] Synchronization code --- .../DeleteProvider/DeleteMethodInfo.cs | 15 ++++++++++- .../Abstract/DynamicBuilder/Helper.cs | 4 +++ .../InsertableProvider/InsertMethodInfo.cs | 10 +++++++ .../InsertableProvider/InsertableHelper.cs | 2 +- .../QueryableProvider/QueryableProvider.cs | 17 +++++++++++- .../SugarProvider/SqlSugarProvider.cs | 6 ++++- .../UpdateProvider/UpdateMethodInfo.cs | 26 ++++++++++++++----- .../UpdateProvider/UpdateableHelper.cs | 4 +++ .../MethodCallExpressionResolve.cs | 4 +++ ...thodCallExpressionResolve_BaseDateFomat.cs | 4 +++ .../MethodCallExpressionResolve_Helper.cs | 11 +++++++- .../IntegrationServices/SplitTableService.cs | 3 ++- 12 files changed, 94 insertions(+), 12 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteMethodInfo.cs b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteMethodInfo.cs index 8eb487cfb..de7797071 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteMethodInfo.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteMethodInfo.cs @@ -38,7 +38,20 @@ namespace SqlSugar Context = result }; } - + public CommonMethodInfo EnableDiffLogEvent(object businessData = null) + { + if (Context == null) + { + return new CommonMethodInfo(); + } + var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); + var newMethod = inertable.GetType().GetMyMethod("EnableDiffLogEvent", 1, typeof(object)); + var result = newMethod.Invoke(inertable, new object[] { businessData }); + return new CommonMethodInfo() + { + Context = result + }; + } public CommonMethodInfo SplitTable() { var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); diff --git a/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/Helper.cs b/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/Helper.cs index 072c51e10..354cee702 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/Helper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DynamicBuilder/Helper.cs @@ -82,6 +82,8 @@ namespace SqlSugar attributeType.GetProperty(nameof(SugarColumn.ExtendedAttribute)), attributeType.GetProperty(nameof(SugarColumn.IsDisabledAlterColumn)), attributeType.GetProperty(nameof(SugarColumn.IsOwnsOne)), + attributeType.GetProperty(nameof(SugarColumn.InsertServerTime)), + attributeType.GetProperty(nameof(SugarColumn.UpdateServerTime)), attributeType.GetProperty(nameof(SugarColumn.QuerySql)) } , new object[] { @@ -108,6 +110,8 @@ namespace SqlSugar sugarTable.ExtendedAttribute, sugarTable.IsDisabledAlterColumn, sugarTable.IsOwnsOne, + sugarTable.InsertServerTime, + sugarTable.UpdateServerTime, sugarTable.QuerySql }); return attributeBuilder; diff --git a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs index 641ee714b..8f706fe17 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs @@ -60,6 +60,16 @@ namespace SqlSugar Context = result }; } + public CommonMethodInfo EnableDiffLogEvent(object businessData = null) + { + var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); + var newMethod = inertable.GetType().GetMyMethod("EnableDiffLogEvent", 1, typeof(object)); + var result = newMethod.Invoke(inertable, new object[] { businessData }); + return new CommonMethodInfo() + { + Context = result + }; + } public CommonMethodInfo IgnoreColumns(params string [] ignoreColumns) { var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); diff --git a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs index af8371b5f..909a54440 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs @@ -317,7 +317,7 @@ namespace SqlSugar { column.DbColumnName = column.PropertyName; } - if (isMapping) + if (isMapping&&column.ForOwnsOnePropertyInfo==null) { columnInfo.DbColumnName = GetDbColumnName(column.PropertyName); } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 94b5a1304..6e9af5369 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -1500,7 +1500,21 @@ namespace SqlSugar } else { - return this.Select(this.SqlBuilder.SqlSelectAll); + if (this.QueryBuilder.IsSingle()&&this.EntityInfo?.Type?.GetCustomAttribute() != null&& this.QueryBuilder?.SelectValue?.ToString()=="*") + { + var columnAarray = this.Context.EntityMaintenance.GetEntityInfo().Columns; + var sql = string.Empty; + var columns= columnAarray.Where(it => typeof(TResult).GetProperties().Any(s => s.Name.EqualCase(it.PropertyName))).Where(it => it.IsIgnore == false).ToList(); + if (columns.Any()) + { + sql = string.Join(",", columns.Select(it => $"{SqlBuilder.GetTranslationColumnName(it.DbColumnName)} AS {SqlBuilder.GetTranslationColumnName(it.PropertyName)} ")); + } + return this.Select(sql); + } + else + { + return this.Select(this.SqlBuilder.SqlSelectAll); + } } } else @@ -1687,6 +1701,7 @@ namespace SqlSugar //} var unionall = this.Context._UnionAll(tableQueryables.ToArray()); unionall.QueryBuilder.Includes = this.QueryBuilder.Includes; + unionall.QueryBuilder.EntityType = typeof(T); if (unionall.QueryBuilder.Includes?.Any()==true) { unionall.QueryBuilder.NoCheckInclude = true; diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs index d2cce89ea..d5b314a37 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -653,8 +653,12 @@ namespace SqlSugar { return resulut.Select("unionTable.*"); } - else + else if (this.Context.CurrentConnectionConfig?.MoreSettings?.IsWithNoLockQuery==true) { + return resulut.Select(sqlBuilder.SqlSelectAll).With(SqlWith.Null); + } + else + { return resulut.Select(sqlBuilder.SqlSelectAll); } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs index f75eee4a2..9c00874c8 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs @@ -13,11 +13,11 @@ namespace SqlSugar internal MethodInfo MethodInfo { get; set; } internal object objectValue { get; set; } - public int ExecuteCommandWithOptLock(bool isThrowError = false) + public int ExecuteCommandWithOptLock(bool isThrowError = false) { if (Context == null) return 0; var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); - var result = inertable.GetType().GetMyMethod("ExecuteCommandWithOptLock",1,typeof(bool)).Invoke(inertable, new object[] { isThrowError }); + var result = inertable.GetType().GetMyMethod("ExecuteCommandWithOptLock", 1, typeof(bool)).Invoke(inertable, new object[] { isThrowError }); return (int)result; } @@ -26,13 +26,13 @@ namespace SqlSugar if (Context == null) return 0; var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); var result = inertable.GetType().GetMyMethod("ExecuteCommandWithOptLockAsync", 1, typeof(bool)).Invoke(inertable, new object[] { isThrowError }); - return await(Task)result; + return await (Task)result; } public int ExecuteCommand() { if (Context == null) return 0; - var inertable=MethodInfo.Invoke(Context, new object[] { objectValue }); - var result= inertable.GetType().GetMethod("ExecuteCommand").Invoke(inertable,new object[] { }); + var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); + var result = inertable.GetType().GetMethod("ExecuteCommand").Invoke(inertable, new object[] { }); return (int)result; } @@ -40,9 +40,23 @@ namespace SqlSugar { if (Context == null) return 0; var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); - var result = inertable.GetType().GetMyMethod("ExecuteCommandAsync",0).Invoke(inertable, new object[] { }); + var result = inertable.GetType().GetMyMethod("ExecuteCommandAsync", 0).Invoke(inertable, new object[] { }); return await (Task)result; } + public UpdateCommonMethodInfo EnableDiffLogEvent(object businessData = null) + { + if(Context == null) + { + return new UpdateCommonMethodInfo(); + } + var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); + var newMethod = inertable.GetType().GetMyMethod("EnableDiffLogEvent", 1, typeof(object)); + var result = newMethod.Invoke(inertable, new object[] { businessData }); + return new UpdateCommonMethodInfo() + { + Context = result + }; + } public UpdateCommonMethodInfo IgnoreColumns(params string[] ignoreColumns) { if (Context == null) diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs index 1473ab679..902355ee4 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs @@ -386,6 +386,10 @@ namespace SqlSugar UpdateServerTime = column.UpdateServerTime, IsPrimarykey=column.IsPrimarykey }; + if (column.ForOwnsOnePropertyInfo != null) + { + columnInfo.DbColumnName = column.DbColumnName; + } if (columnInfo.PropertyType.IsEnum() && columnInfo.Value != null) { if (this.Context.CurrentConnectionConfig.MoreSettings?.TableEnumIsString == true) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 5e2c554bd..02bf0e8bf 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -134,6 +134,10 @@ namespace SqlSugar } var value = GetNewExpressionValue(express.Object); var dateString2 = this.Context.DbMehtods.GetDateString(value, format); + if (IsSqlServerModel()) + { + dateString2= string.Format("FORMAT({0},'{1}','en-US')", value, format); + } if (dateString2 == null) { var dateString = GeDateFormat(format, value); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_BaseDateFomat.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_BaseDateFomat.cs index c45d8a676..1ba58c6ac 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_BaseDateFomat.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_BaseDateFomat.cs @@ -20,6 +20,10 @@ namespace SqlSugar } else if (IsOracle() || IsPg()) { + if (this.Context?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.SqlServer) + { + return string.Format("FORMAT({0},'{1}','en-US')", value, formatString); + } if (!(formatString?.Contains("24") == true)) { formatString = formatString.Replace("HH", "hh24"); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs index 364f073d5..8a76bd577 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs @@ -1,4 +1,4 @@ -using System; + using System; using System.Collections; using System.Collections.Generic; using System.Linq; @@ -786,6 +786,10 @@ namespace SqlSugar if (model.Args.Count > 1) { var dateString2 = this.Context.DbMehtods.GetDateString(model.Args.First().MemberName.ObjToString(), model.Args.Last().MemberValue.ObjToString()); + if (IsSqlServerModel()) + { + return string.Format("FORMAT({0},'{1}','en-US')", model.Args.First().MemberName.ObjToString(), model.Args.Last().MemberValue.ObjToString()); + } if (dateString2 != null) return dateString2; return GeDateFormat(model.Args.Last().MemberValue.ObjToString(), model.Args.First().MemberName.ObjToString()); } @@ -999,6 +1003,11 @@ namespace SqlSugar return null; } + private bool IsSqlServerModel() + { + return this.Context?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.SqlServer; + } + private string GetLike(string result, bool iLike) { if (iLike) diff --git a/Src/Asp.Net/SqlSugar/IntegrationServices/SplitTableService.cs b/Src/Asp.Net/SqlSugar/IntegrationServices/SplitTableService.cs index a3022531f..640062d32 100644 --- a/Src/Asp.Net/SqlSugar/IntegrationServices/SplitTableService.cs +++ b/Src/Asp.Net/SqlSugar/IntegrationServices/SplitTableService.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Reflection; using System.Text; @@ -171,7 +172,7 @@ namespace SqlSugar { day = group3; } - return Convert.ToDateTime($"{year}-{month}-{day}"); + return Convert.ToDateTime($"{year}-{month}-{day}",CultureInfo.InvariantCulture); } private string PadLeft2(string str)