Synchronization code

This commit is contained in:
sunkaixuan
2022-11-09 17:33:14 +08:00
parent bf9d3be2a1
commit 83b31f4053
7 changed files with 48 additions and 7 deletions

View File

@@ -175,7 +175,7 @@ namespace SqlSugar
}
catch (Exception ex)
{
Check.Exception(true, ErrorMessage.ConnnectionOpen, ex.Message);
Check.Exception(true, ErrorMessage.ConnnectionOpen, ex.Message+$"DbType=\"{this.Context.CurrentConnectionConfig.DbType}\";ConfigId=\"{this.Context.CurrentConnectionConfig.ConfigId}\"");
}
}
}

View File

@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace SqlSugar
{
@@ -508,11 +509,41 @@ namespace SqlSugar
return string.Format(" DATEDIFF({0},{1},{2}) ", parameter.MemberValue?.ToString().ToSqlFilter(), parameter2.MemberName, parameter3.MemberName); ;
}
public virtual string Format(MethodCallExpressionModel model)
public virtual string FormatRowNumber(MethodCallExpressionModel model)
{
var str = model.Args[0].MemberValue.ObjToString();
var array = model.Args.Skip(1).Select(it => it.IsMember?it.MemberName:it.MemberValue).ToArray();
return string.Format("'"+str+ "'", array);
var array = model.Args.Skip(1).Select(it => it.IsMember ? it.MemberName : it.MemberValue).ToArray();
return string.Format("'" + str + "'", array);
}
public virtual string Format(MethodCallExpressionModel model)
{
var str ="'"+ model.Args[0].MemberValue.ObjToString()+"'";
var revalue = MergeString("'", "$1", "'");
if (revalue.Contains("concat("))
{
return FormatConcat(model);
}
str =Regex.Replace(str, @"(\{\d+?\})", revalue);
var array = model.Args.Skip(1).Select(it => it.IsMember?it.MemberName:it.MemberValue)
.Select(it=>ToString(new MethodCallExpressionModel() { Args=new List<MethodCallExpressionArgs>() {
new MethodCallExpressionArgs(){ IsMember=true, MemberName=it }
} })).ToArray();
return string.Format(""+str+ "", array);
}
private string FormatConcat(MethodCallExpressionModel model)
{
var str = "concat('" + model.Args[0].MemberValue.ObjToString() + "')";
str = Regex.Replace(str, @"(\{\d+?\})", "',$1,'");
var array = model.Args.Skip(1).Select(it => it.IsMember ? it.MemberName : it.MemberValue)
.Select(it => ToString(new MethodCallExpressionModel()
{
Args = new List<MethodCallExpressionArgs>() {
new MethodCallExpressionArgs(){ IsMember=true, MemberName=it }
}
})).ToArray();
return string.Format("" + str + "", array);
}
public virtual string Abs(MethodCallExpressionModel model)

View File

@@ -76,6 +76,7 @@ namespace SqlSugar
string Oracle_ToChar(MethodCallExpressionModel model);
string SqlServer_DateDiff(MethodCallExpressionModel model);
string Format(MethodCallExpressionModel model);
string FormatRowNumber(MethodCallExpressionModel model);
string Abs(MethodCallExpressionModel model);
string Round(MethodCallExpressionModel model);

View File

@@ -109,6 +109,7 @@ namespace SqlSugar
public virtual Action<Type> InitMappingInfo { get; set; }
public virtual Action RefreshMapping { get; set; }
public virtual Type SubTableType { get; set; }
public string MethodName { get; set; }
#endregion
#region Core methods

View File

@@ -677,7 +677,7 @@ namespace SqlSugar
.GetEntityInfo(oppsite.Expression.Type).Columns.FirstOrDefault(it => it.PropertyName == oppsite.Member.Name);
return columnInfo;
}
protected MethodCallExpressionArgs GetMethodCallArgs(ExpressionParameter parameter, Expression item)
protected MethodCallExpressionArgs GetMethodCallArgs(ExpressionParameter parameter, Expression item,string name=null)
{
var newContext = this.Context.GetCopyContext();
newContext.MappingColumns = this.Context.MappingColumns;
@@ -685,6 +685,7 @@ namespace SqlSugar
newContext.IgnoreComumnList = this.Context.IgnoreComumnList;
newContext.IsSingle = this.Context.IsSingle;
newContext.SqlFuncServices = this.Context.SqlFuncServices;
newContext.MethodName = name;
newContext.Resolve(item, this.Context.IsJoin ? ResolveExpressType.WhereMultiple : ResolveExpressType.WhereSingle);
this.Context.Index = newContext.Index;
this.Context.ParameterIndex = newContext.ParameterIndex;

View File

@@ -559,7 +559,7 @@ namespace SqlSugar
}
else if (isBinaryExpression)
{
model.Args.Add(GetMethodCallArgs(parameter, item));
model.Args.Add(GetMethodCallArgs(parameter, item,name));
}
else if (isSubIIF)
{
@@ -1002,6 +1002,10 @@ namespace SqlSugar
case "Format":
var xx=base.BaseParameter;
var result = this.Context.DbMehtods.Format(model);
if (this.Context.MethodName.IsIn("RowNumber", "MappingColumn"))
{
result = this.Context.DbMehtods.FormatRowNumber(model);
}
this.Context.Parameters.RemoveAll(it => model.Args.Select(x=>x.MemberName.ObjToString()).Contains(it.ParameterName) );
return result;
case "Abs":

View File

@@ -1,5 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace SqlSugar
{
public class MySqlExpressionContext : ExpressionContext, ILambdaExpressions