mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-24 13:03:43 +08:00
Synchronization code
This commit is contained in:
@@ -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}\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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":
|
||||
|
@@ -1,5 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public class MySqlExpressionContext : ExpressionContext, ILambdaExpressions
|
||||
|
Reference in New Issue
Block a user