From 1461248b97cb487a500117ecdc326bb49a79b1be Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 10 Sep 2022 21:19:05 +0800 Subject: [PATCH] Update .net core project --- .../Abstract/AdoProvider/AdoProvider.cs | 12 ++-- .../InsertableProvider/InsertableProvider.cs | 30 +++++++- .../SugarProvider/SqlSugarAccessory.cs | 2 +- .../ExpressionsToSql/Common/ExpressionTool.cs | 68 +++++++++++++++++-- .../Common/NewExpressionInfo.cs | 1 + .../DbMethods/DefaultDbMethod.cs | 25 +++++++ .../ExpressionsToSql/DbMethods/IDbMethods.cs | 2 +- .../ExpressionsToSql/DbMethods/SqlFunc.cs | 17 +++++ .../ResolveItems/BaseResolve.cs | 33 +++++---- .../MethodCallExpressionResolve.cs | 10 +++ .../SqlSugar/Interface/ISimpleClient.cs | 2 + .../DbMaintenance/SqlServerDbMaintenance.cs | 6 ++ Src/Asp.NetCore2/SqlSugar/SimpleClient.cs | 10 +++ .../SqlSugar/Utilities/UtilMethods.cs | 29 ++++++++ 14 files changed, 220 insertions(+), 27 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index a79e23aa4..689ce8f14 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -433,7 +433,7 @@ namespace SqlSugar CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); - throw ex; + throw; } } public virtual DataSet GetDataSetAll(string sql, params SugarParameter[] parameters) @@ -466,7 +466,7 @@ namespace SqlSugar CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); - throw ex; + throw; } finally { @@ -502,7 +502,7 @@ namespace SqlSugar CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); - throw ex; + throw; } finally { @@ -543,7 +543,7 @@ namespace SqlSugar CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); - throw ex; + throw; } finally { @@ -588,7 +588,7 @@ namespace SqlSugar CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); - throw ex; + throw; } } public virtual async Task GetScalarAsync(string sql, params SugarParameter[] parameters) @@ -624,7 +624,7 @@ namespace SqlSugar CommandType = CommandType.Text; if (ErrorEvent != null) ExecuteErrorEvent(sql, parameters, ex); - throw ex; + throw; } finally { diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 9f996ac27..3e4aa5e98 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -238,7 +238,20 @@ namespace SqlSugar { var result = InsertObjs.First(); var identityKeys = GetIdentityKeys(); - if (identityKeys.Count == 0) { return this.ExecuteCommand() > 0; } + if (identityKeys.Count == 0) + { + var snowColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey = true && it.UnderType == UtilConstants.LongType); + if (snowColumn!=null) + { + var id = this.ExecuteReturnSnowflakeId(); + snowColumn.PropertyInfo.SetValue(result, id); + return true; + } + else + { + return this.ExecuteCommand() > 0; + } + } var idValue = ExecuteReturnBigIdentity(); Check.Exception(identityKeys.Count > 1, "ExecuteCommandIdentityIntoEntity does not support multiple identity keys"); var identityKey = identityKeys.First(); @@ -290,7 +303,20 @@ namespace SqlSugar { var result = InsertObjs.First(); var identityKeys = GetIdentityKeys(); - if (identityKeys.Count == 0) { return await this.ExecuteCommandAsync() > 0; } + if (identityKeys.Count == 0) + { + var snowColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey = true && it.UnderType == UtilConstants.LongType); + if (snowColumn != null) + { + var id =await this.ExecuteReturnSnowflakeIdAsync(); + snowColumn.PropertyInfo.SetValue(result, id); + return true; + } + else + { + return await this.ExecuteCommandAsync() > 0; + } + } var idValue =await ExecuteReturnBigIdentityAsync(); Check.Exception(identityKeys.Count > 1, "ExecuteCommandIdentityIntoEntity does not support multiple identity keys"); var identityKey = identityKeys.First(); diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs index 32a1d4c15..b6c887515 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs @@ -408,7 +408,7 @@ namespace SqlSugar Check.Exception(InstanceFactory.CustomDllName.IsNullOrEmpty(), "DbType.Custom: InstanceFactory.CustomDllName is not null "); break; case DbType.QuestDB: - Check.Exception(SugarCompatible.IsFramework, "QuestDB only support .net core"); + DependencyManagement.TryPostgreSQL(); break; case DbType.ClickHouse: Check.Exception(SugarCompatible.IsFramework, "ClickHouse only support .net core"); diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index 8e001638a..c1e7071ba 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -431,7 +431,7 @@ namespace SqlSugar return item is UnaryExpression && item.NodeType == ExpressionType.Convert; } - internal static List GetNewexpressionInfos(Expression item,ExpressionContext context) + internal static List GetNewexpressionInfos(Expression item,ExpressionContext context, BaseResolve baseResolve) { List result = new List(); foreach (MemberBinding binding in ((MemberInitExpression)item).Bindings) @@ -442,7 +442,7 @@ namespace SqlSugar } MemberAssignment memberAssignment = (MemberAssignment)binding; NewExpressionInfo additem = new NewExpressionInfo(); - if ((memberAssignment.Expression is MemberExpression)) + if (memberAssignment.Expression is MemberExpression) { additem.LeftNameName = memberAssignment.Member.Name; var member = (memberAssignment.Expression as MemberExpression).Expression; @@ -451,27 +451,85 @@ namespace SqlSugar additem.RightDbName = context.GetDbColumnName(member.Type.Name, additem.RightName); result.Add(additem); } + else if (memberAssignment.Expression is ConstantExpression) + { + var value = ((ConstantExpression)memberAssignment.Expression).Value; + //var leftInfo = keys[i]; + additem.Type = nameof(ConstantExpression); + additem.RightName = memberAssignment.Member.Name; + additem.ShortName = memberAssignment.Member.Name; + additem.RightName = memberAssignment.Member.Name; + additem.LeftNameName = memberAssignment.Member.Name; + additem.RightDbName = UtilMethods.GetSqlValue(value); + //additem.Value = ""; + result.Add(additem); + } + else + { + var value = baseResolve.GetNewExpressionValue(memberAssignment.Expression); + //var leftInfo = keys[i]; + additem.Type = nameof(ConstantExpression); + additem.RightName = memberAssignment.Member.Name; + additem.ShortName = memberAssignment.Member.Name; + additem.RightName = memberAssignment.Member.Name; + additem.LeftNameName = memberAssignment.Member.Name; + additem.RightDbName = value; + //additem.Value = ""; + result.Add(additem); + } + } return result; } - internal static List GetNewDynamicexpressionInfos(Expression item, ExpressionContext context) + internal static List GetNewDynamicexpressionInfos(Expression item, ExpressionContext context, BaseResolve baseResolve) { List result = new List(); + int i = 0; foreach (var binding in ((NewExpression)item).Arguments) { NewExpressionInfo additem = new NewExpressionInfo(); + var keys = ((NewExpression)item).Members; if (binding is MemberExpression) { - var member = (MemberExpression)binding; + var member = (MemberExpression)binding; + var entityName = member.Expression?.Type?.Name; //var memberAssignment = binding; //NewExpressionInfo additem = new NewExpressionInfo(); additem.RightName = member.Member.Name; additem.ShortName = member.Expression + ""; additem.RightName = member.Member.Name; - additem.RightDbName = context.GetDbColumnName(member.Type.Name, additem.RightName); + additem.RightDbName = context.GetDbColumnName(entityName, additem.RightName); + additem.LeftNameName = member.Member.Name; //additem.Value = ""; result.Add(additem); } + else if (binding is ConstantExpression) + { + var value = ((ConstantExpression)binding).Value; + var leftInfo = keys[i]; + additem.Type = nameof(ConstantExpression); + additem.RightName = leftInfo.Name; + additem.ShortName = leftInfo.Name; + additem.RightName = leftInfo.Name; + additem.LeftNameName = leftInfo.Name; + additem.RightDbName = UtilMethods.GetSqlValue(value); + //additem.Value = ""; + result.Add(additem); + } + else + { + var value = baseResolve.GetNewExpressionValue(binding); + var leftInfo = keys[i]; + additem.Type = nameof(ConstantExpression); + additem.RightName = leftInfo.Name; + additem.ShortName = leftInfo.Name; + additem.RightName = leftInfo.Name; + additem.LeftNameName = leftInfo.Name; + additem.RightDbName = value; + //additem.Value = ""; + result.Add(additem); + } + i++; } return result; } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/NewExpressionInfo.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/NewExpressionInfo.cs index 0bbac700b..35d6aa87a 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/NewExpressionInfo.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/NewExpressionInfo.cs @@ -12,5 +12,6 @@ namespace SqlSugar public string RightName { get; set; } public string RightDbName { get; set; } public string ShortName { get; set; } + public string Type { get; set; } } } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 4bd410aa9..73db58b83 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -572,6 +572,31 @@ namespace SqlSugar var parameter4 = model.Args[3]; return $" STUFF ({parameter1.MemberName}, {parameter2.MemberName}, {parameter3.MemberName}, {parameter4.MemberName}) "; } + public virtual string Exists(MethodCallExpressionModel model) + { + var parameter1 = model.Args[0]; + if (model.Args.Count > 1) + { + var parameter2 = model.Args[1]; + if (UtilMethods.IsParentheses(parameter1.MemberName)) + { + parameter1.MemberName = $" {parameter1.MemberName.ObjToString().Trim().TrimEnd(')')} AND {parameter2.MemberName}) "; + } + else + { + parameter1.MemberName = $" {parameter1.MemberName} AND {parameter2.MemberName} "; + } + } + if (UtilMethods.IsParentheses(parameter1.MemberName)) + { + return $" Exists{parameter1.MemberName} "; + } + else + { + return $" Exists({parameter1.MemberName}) "; + } + } + public virtual string GetDateString(string dateValue, string format) { return null; diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index 6202f239c..d7640de17 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -89,7 +89,7 @@ namespace SqlSugar string Stuff(MethodCallExpressionModel model); string RowNumber(MethodCallExpressionModel model); string RowCount(MethodCallExpressionModel model); - + string Exists(MethodCallExpressionModel model); string GetDateString(string dateValue,string format); string GetForXmlPath(); } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs index b6d5a9270..b3094b1ac 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -115,6 +115,23 @@ namespace SqlSugar { return thisValue.Equals(parameterValue); } + + public static bool Exists(string subQueryableName_Or_OneToOnePropertyName) + { + throw new NotSupportedException("Can only be used in expressions"); + } + public static bool Exists(valueType subQueryableName_Or_OneToOnePropertyName) where valueType : struct + { + throw new NotSupportedException("Can only be used in expressions"); + } + public static bool Exists(string subQueryableName_Or_OneToOnePropertyName, List conditionalModels) + { + throw new NotSupportedException("Can only be used in expressions"); + } + public static bool Exists(valueType subQueryableName_Or_OneToOnePropertyName, List conditionalModels) where valueType : struct + { + throw new NotSupportedException("Can only be used in expressions"); + } public static bool DateIsSame(DateTime date1, DateTime date2) { return date1.ToString("yyyy-MM-dd") == date2.ToString("yyyy-MM-dd"); diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs index fef3b3cd9..a0a425270 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs @@ -480,11 +480,11 @@ namespace SqlSugar List newExpressionInfos = new List(); if (item is MemberInitExpression) { - newExpressionInfos = ExpressionTool.GetNewexpressionInfos(item,this.Context); + newExpressionInfos = ExpressionTool.GetNewexpressionInfos(item,this.Context,this); } else { - newExpressionInfos = ExpressionTool.GetNewDynamicexpressionInfos(item, this.Context); + newExpressionInfos = ExpressionTool.GetNewDynamicexpressionInfos(item, this.Context,this); } foreach (NewExpressionInfo newExpressionInfo in newExpressionInfos) { @@ -501,24 +501,33 @@ namespace SqlSugar List newExpressionInfos = new List(); if (item is MemberInitExpression) { - newExpressionInfos = ExpressionTool.GetNewexpressionInfos(item, this.Context); + newExpressionInfos = ExpressionTool.GetNewexpressionInfos(item, this.Context,this); } else { - newExpressionInfos = ExpressionTool.GetNewDynamicexpressionInfos(item, this.Context); + newExpressionInfos = ExpressionTool.GetNewDynamicexpressionInfos(item, this.Context,this); } - mappingKeys = new Dictionary(); + //mappingKeys = new Dictionary(); foreach (NewExpressionInfo newExpressionInfo in newExpressionInfos) { //var property=item.Type.GetProperties().Where(it => it.Name == newExpressionInfo.l).First(); //asName = GetAsName(item, newExpressionInfo.ShortName, property); - mappingKeys.Add("Single_"+newExpressionInfo.LeftNameName,asName + "." + newExpressionInfo.RightDbName ); - CallContextThread>.SetData("Exp_Select_Mapping_Key", mappingKeys); - CallContextAsync>.SetData("Exp_Select_Mapping_Key", mappingKeys); - parameter.Context.Result.Append(this.Context.GetAsString( - this.Context.SqlTranslationLeft + asName + "." + newExpressionInfo.RightDbName + this.Context.SqlTranslationRight, - newExpressionInfo.RightDbName - )); + mappingKeys.Add("Single_" + newExpressionInfo.LeftNameName, asName + "." + newExpressionInfo.LeftNameName); + if (newExpressionInfo.Type == nameof(ConstantExpression)) + { + CallContextThread>.SetData("Exp_Select_Mapping_Key", mappingKeys); + CallContextAsync>.SetData("Exp_Select_Mapping_Key", mappingKeys); + parameter.Context.Result.Append($" {newExpressionInfo.RightDbName} AS { this.Context.SqlTranslationLeft}{asName}.{newExpressionInfo.LeftNameName}{ this.Context.SqlTranslationRight} "); + } + else + { + CallContextThread>.SetData("Exp_Select_Mapping_Key", mappingKeys); + CallContextAsync>.SetData("Exp_Select_Mapping_Key", mappingKeys); + parameter.Context.Result.Append(this.Context.GetAsString( + this.Context.SqlTranslationLeft + asName + "." + newExpressionInfo.LeftNameName + this.Context.SqlTranslationRight, + newExpressionInfo.RightDbName + )); + } } } else diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 849ed2f2b..14560ebc0 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -1018,6 +1018,16 @@ namespace SqlSugar return this.Context.DbMehtods.RowNumber(model); case "RowCount": return this.Context.DbMehtods.RowCount(model); + case "Exists": + if (model.Args.Count > 1) + { + this.Context.Parameters.RemoveAll(it => model.Args[1].MemberName.ObjToString().Contains(it.ParameterName) ); + List conditionalModels = (List) model.Args[1].MemberValue; + var sqlObj = this.Context.SugarContext.Context.Queryable().SqlBuilder.ConditionalModelToSql(conditionalModels, 0); + model.Args[1].MemberName = sqlObj.Key; + this.Context.Parameters.AddRange(sqlObj.Value); + } + return this.Context.DbMehtods.Exists(model); default: break; } diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/ISimpleClient.cs b/Src/Asp.NetCore2/SqlSugar/Interface/ISimpleClient.cs index 7b3d89259..bd58d5b83 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/ISimpleClient.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/ISimpleClient.cs @@ -44,6 +44,7 @@ namespace SqlSugar long InsertReturnBigIdentity(T insertObj); long InsertReturnSnowflakeId(T insertObj); List InsertReturnSnowflakeId(List insertObjs); + T InsertReturnEntity(T insertObj); bool IsAny(Expression> whereExpression); @@ -79,6 +80,7 @@ namespace SqlSugar Task InsertReturnBigIdentityAsync(T insertObj); Task InsertReturnSnowflakeIdAsync(T insertObj); Task> InsertReturnSnowflakeIdAsync(List insertObjs); + Task InsertReturnEntityAsync(T insertObj); Task IsAnyAsync(Expression> whereExpression); Task UpdateAsync(Expression> columns, Expression> whereExpression); diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs b/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs index 6cc3f04d2..f556d0fe8 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs @@ -465,6 +465,7 @@ namespace SqlSugar }); if (!GetDataBaseList(newDb).Any(it => it.Equals(databaseName, StringComparison.CurrentCultureIgnoreCase))) { + var separatorChar = UtilMethods.GetSeparatorChar(); var sql = CreateDataBaseSql; if (databaseDirectory.HasValue()) { @@ -491,11 +492,16 @@ namespace SqlSugar maxsize = 1gb, filegrowth = 10mb ); "; + databaseDirectory = databaseDirectory.Replace("\\", separatorChar); } if (databaseName.Contains(".")) { databaseName = $"[{databaseName}]"; } + else if (Regex.IsMatch(databaseName,@"^\d.*")) + { + databaseName = $"[{databaseName}]"; + } newDb.Ado.ExecuteCommand(string.Format(sql, databaseName, databaseDirectory)); } return true; diff --git a/Src/Asp.NetCore2/SqlSugar/SimpleClient.cs b/Src/Asp.NetCore2/SqlSugar/SimpleClient.cs index c3c9059f6..66199282e 100644 --- a/Src/Asp.NetCore2/SqlSugar/SimpleClient.cs +++ b/Src/Asp.NetCore2/SqlSugar/SimpleClient.cs @@ -182,6 +182,12 @@ namespace SqlSugar { return this.Context.Insertable(insertObjs).ExecuteReturnSnowflakeIdListAsync(); } + + public virtual T InsertReturnEntity(T insertObj) + { + return this.Context.Insertable(insertObj).ExecuteReturnEntity(); + } + public virtual bool InsertRange(T[] insertObjs) { return this.Context.Insertable(insertObjs).ExecuteCommand() > 0; @@ -308,6 +314,10 @@ namespace SqlSugar { return this.Context.Insertable(insertObj).ExecuteReturnBigIdentityAsync(); } + public virtual async Task InsertReturnEntityAsync(T insertObj) + { + return await this.Context.Insertable(insertObj).ExecuteReturnEntityAsync(); + } public virtual async Task InsertRangeAsync(T[] insertObjs) { return await this.Context.Insertable(insertObjs).ExecuteCommandAsync() > 0; diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs index 55f0cc17a..961ef3c49 100644 --- a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Globalization; +using System.IO; using System.Linq; using System.Linq.Expressions; using System.Reflection; @@ -16,6 +17,14 @@ namespace SqlSugar { public class UtilMethods { + public static string GetSeparatorChar() + { + return Path.Combine("a", "a").Replace("a", ""); + } + public static bool IsParentheses(object name) + { + return name.ObjToString().Trim().Last() == ')' && name.ObjToString().Trim().First() == '('; + } internal static bool IsDefaultValue(object value) { @@ -530,6 +539,26 @@ namespace SqlSugar } } + public static string GetSqlValue(object value) + { + if (value == null) + { + return "null"; + } + else if (UtilMethods.IsNumber(value.GetType().Name)) + { + return value.ObjToString(); + } + else if (value is DateTime) + { + return UtilMethods.GetConvertValue(value) + ""; + } + else + { + return value.ToSqlValue(); + } + } + public static void DataInoveByExpresson(Type[] datas, MethodCallExpression callExpresion) { var methodInfo = callExpresion.Method;