mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-18 17:48:11 +08:00
-
This commit is contained in:
@@ -21,6 +21,7 @@ namespace OrmTest.UnitTest
|
||||
base.Begin();
|
||||
for (int i = 0; i < base.Count; i++)
|
||||
{
|
||||
whereSingle25();
|
||||
whereSingle24();
|
||||
whereSingle23();
|
||||
whereSingle22();
|
||||
@@ -390,6 +391,19 @@ namespace OrmTest.UnitTest
|
||||
new SugarParameter("@Datetime10",DateTime.Now.Date)
|
||||
}, "whereSingle24");
|
||||
}
|
||||
private void whereSingle25()
|
||||
{
|
||||
var p = DateTime.Now;
|
||||
Expression<Func<DataTestInfo, bool>> exp = it => it.Datetime1.Date > p.Date;
|
||||
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
||||
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
|
||||
var value = expContext.Result.GetString();
|
||||
var pars = expContext.Parameters;
|
||||
base.Check(value, pars, "( [Datetime1] > @Datetime10 )", new List<SugarParameter>()
|
||||
{
|
||||
new SugarParameter("@Datetime10",DateTime.Now.Date)
|
||||
}, "whereSingle24");
|
||||
}
|
||||
}
|
||||
|
||||
public class WhereConst
|
||||
|
@@ -289,5 +289,10 @@ namespace SqlSugar
|
||||
else
|
||||
return string.Format("{0}.*", shortName);
|
||||
}
|
||||
|
||||
public virtual string MergeString(params string[] strings)
|
||||
{
|
||||
return string.Join("", strings);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -51,5 +51,6 @@ namespace SqlSugar
|
||||
string True();
|
||||
string False();
|
||||
string GuidNew();
|
||||
string MergeString(params string[] strings);
|
||||
}
|
||||
}
|
||||
|
@@ -19,11 +19,12 @@ namespace SqlSugar
|
||||
var isValue = expression.Member.Name == "Value" && expression.Member.DeclaringType.Name == "Nullable`1";
|
||||
var isBool = expression.Type == UtilConstants.BoolType;
|
||||
var isValueBool = isValue && isBool && parameter.BaseExpression == null;
|
||||
var isLength = expression.Member.Name == "Length" &&childIsMember&&childExpression.Type == UtilConstants.StringType;
|
||||
var isLength = expression.Member.Name == "Length" && childIsMember && childExpression.Type == UtilConstants.StringType;
|
||||
var isDateValue = expression.Member.Name.IsIn(Enum.GetNames(typeof(DateType))) && (expression.Expression as MemberExpression).Type == UtilConstants.DateType;
|
||||
var isLogicOperator = ExpressionTool.IsLogicOperator(baseParameter.OperatorValue) || baseParameter.OperatorValue.IsNullOrEmpty();
|
||||
var isHasValue = isLogicOperator && expression.Member.Name == "HasValue" && expression.Expression != null && expression.NodeType == ExpressionType.MemberAccess;
|
||||
var isDateTimeNowDate = expression.Member.Name == "Date" &&childIsMember&&childExpression.Member.Name == "Now";
|
||||
var isDateTimeNowDate = expression.Member.Name == "Date" && childIsMember && childExpression.Member.Name == "Now";
|
||||
var isDateDate = expression.Member.Name == "Date" && expression.Expression.Type == UtilConstants.DateType;
|
||||
if (isLength)
|
||||
{
|
||||
var oldCommonTempDate = parameter.CommonTempData;
|
||||
@@ -85,6 +86,37 @@ namespace SqlSugar
|
||||
{
|
||||
expression = expression.Expression as MemberExpression;
|
||||
}
|
||||
else if (isDateDate)
|
||||
{
|
||||
var name = expression.Member.Name;
|
||||
var oldCommonTempDate = parameter.CommonTempData;
|
||||
parameter.CommonTempData = CommonTempDataType.Result;
|
||||
this.Expression = expression.Expression;
|
||||
this.Start();
|
||||
var isConst = parameter.CommonTempData.GetType() == UtilConstants.DateType;
|
||||
if (isConst)
|
||||
{
|
||||
AppendValue(parameter, isLeft, parameter.CommonTempData.ObjToDate().Date);
|
||||
}
|
||||
else
|
||||
{
|
||||
var GetYear = new MethodCallExpressionModel()
|
||||
{
|
||||
Args = new List<MethodCallExpressionArgs>() {
|
||||
new MethodCallExpressionArgs() { IsMember=true, MemberName=parameter.CommonTempData, MemberValue=parameter.CommonTempData },
|
||||
new MethodCallExpressionArgs() { MemberName=DateType.Year, MemberValue=DateType.Year}
|
||||
}
|
||||
};
|
||||
AppendMember(parameter, isLeft,this.Context.DbMehtods.MergeString(
|
||||
this.GetDateValue(parameter.CommonTempData, DateType.Year),
|
||||
"+'-'+",
|
||||
this.GetDateValue(parameter.CommonTempData, DateType.Month),
|
||||
"+'-'+",
|
||||
this.GetDateValue(parameter.CommonTempData, DateType.Day)));
|
||||
}
|
||||
parameter.CommonTempData = oldCommonTempDate;
|
||||
return;
|
||||
}
|
||||
else if (isDateTimeNowDate)
|
||||
{
|
||||
AppendValue(parameter, isLeft, DateTime.Now.Date);
|
||||
@@ -232,5 +264,17 @@ namespace SqlSugar
|
||||
fieldName = Context.GetTranslationColumnName(fieldName);
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
private string GetDateValue(object value, DateType type)
|
||||
{
|
||||
var pars = new MethodCallExpressionModel()
|
||||
{
|
||||
Args = new List<MethodCallExpressionArgs>() {
|
||||
new MethodCallExpressionArgs() { IsMember=true, MemberName=value, MemberValue=value },
|
||||
new MethodCallExpressionArgs() { MemberName=type, MemberValue=type}
|
||||
}
|
||||
};
|
||||
return this.Context.DbMehtods.DateValue(pars);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -119,6 +119,9 @@ namespace SqlSugar
|
||||
var parameter = model.Args[0];
|
||||
return string.Format(" LENGTH({0})", parameter.MemberName);
|
||||
}
|
||||
|
||||
public override string MergeString(params string[] strings)
|
||||
{
|
||||
return " concat("+string.Join(",", strings)+") ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -191,5 +191,10 @@ namespace SqlSugar
|
||||
}
|
||||
return string.Format(" Cast((JulianDay({0}) - JulianDay({1})) *{2} As INTEGER)", parameter, parameter2, time);
|
||||
}
|
||||
|
||||
public override string MergeString(params string[] strings)
|
||||
{
|
||||
return string.Join("||", strings) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user