mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-08 02:14:53 +08:00
-
This commit is contained in:
@@ -21,6 +21,10 @@ namespace OrmTest.UnitTest
|
|||||||
base.Begin();
|
base.Begin();
|
||||||
for (int i = 0; i < base.Count; i++)
|
for (int i = 0; i < base.Count; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
whereSingle21();
|
||||||
|
whereSingle20();
|
||||||
|
whereSingle19();
|
||||||
whereSingle18();
|
whereSingle18();
|
||||||
whereSingle17();
|
whereSingle17();
|
||||||
whereSingle16();
|
whereSingle16();
|
||||||
@@ -308,6 +312,43 @@ namespace OrmTest.UnitTest
|
|||||||
|
|
||||||
}, "whereSingle18");
|
}, "whereSingle18");
|
||||||
}
|
}
|
||||||
|
private void whereSingle19()
|
||||||
|
{
|
||||||
|
Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value==false;
|
||||||
|
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
||||||
|
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
|
||||||
|
var value = expContext.Result.GetString();
|
||||||
|
var pars = expContext.Parameters;
|
||||||
|
base.Check(value, pars, "( [Bool2] = @Value0 )", new List<SugarParameter>()
|
||||||
|
{
|
||||||
|
new SugarParameter("@Value0",false)
|
||||||
|
}, "whereSingle19");
|
||||||
|
}
|
||||||
|
private void whereSingle20()
|
||||||
|
{
|
||||||
|
Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value == it.Bool1;
|
||||||
|
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
||||||
|
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
|
||||||
|
var value = expContext.Result.GetString();
|
||||||
|
var pars = expContext.Parameters;
|
||||||
|
base.Check(value, pars, "( [Bool2] = [Bool1] )", new List<SugarParameter>()
|
||||||
|
{
|
||||||
|
|
||||||
|
}, "whereSingle19");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void whereSingle21()
|
||||||
|
{
|
||||||
|
//Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value;
|
||||||
|
//SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
||||||
|
//expContext.Resolve(exp, ResolveExpressType.WhereSingle);
|
||||||
|
//var value = expContext.Result.GetString();
|
||||||
|
//var pars = expContext.Parameters;
|
||||||
|
//base.Check(value, pars, "( 1 = 2 )", new List<SugarParameter>()
|
||||||
|
//{
|
||||||
|
|
||||||
|
//}, "whereSingle21");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class WhereConst
|
public class WhereConst
|
||||||
|
|||||||
@@ -14,8 +14,13 @@ namespace SqlSugar
|
|||||||
var isLeft = parameter.IsLeft;
|
var isLeft = parameter.IsLeft;
|
||||||
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
|
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
|
||||||
var expression = base.Expression as MemberExpression;
|
var expression = base.Expression as MemberExpression;
|
||||||
if (expression.Expression != null&& expression.Expression.NodeType!= ExpressionType.Parameter) {
|
if (expression.Member.Name == "Value" && expression.Member.GetType().Name == "RuntimePropertyInfo")
|
||||||
var value= ExpressionTool.GetMemberValue(expression.Member, expression);
|
{
|
||||||
|
expression = expression.Expression as MemberExpression;
|
||||||
|
}
|
||||||
|
else if (expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter)
|
||||||
|
{
|
||||||
|
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||||
if (isSetTempData)
|
if (isSetTempData)
|
||||||
{
|
{
|
||||||
baseParameter.CommonTempData = value;
|
baseParameter.CommonTempData = value;
|
||||||
@@ -31,7 +36,7 @@ namespace SqlSugar
|
|||||||
switch (parameter.Context.ResolveType)
|
switch (parameter.Context.ResolveType)
|
||||||
{
|
{
|
||||||
case ResolveExpressType.SelectSingle:
|
case ResolveExpressType.SelectSingle:
|
||||||
fieldName = getSingleName(parameter, expression, isLeft);
|
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||||
if (isSetTempData)
|
if (isSetTempData)
|
||||||
{
|
{
|
||||||
baseParameter.CommonTempData = fieldName;
|
baseParameter.CommonTempData = fieldName;
|
||||||
@@ -42,7 +47,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ResolveExpressType.SelectMultiple:
|
case ResolveExpressType.SelectMultiple:
|
||||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||||
if (isSetTempData)
|
if (isSetTempData)
|
||||||
{
|
{
|
||||||
baseParameter.CommonTempData = fieldName;
|
baseParameter.CommonTempData = fieldName;
|
||||||
@@ -55,40 +60,41 @@ namespace SqlSugar
|
|||||||
case ResolveExpressType.WhereSingle:
|
case ResolveExpressType.WhereSingle:
|
||||||
if (isSetTempData)
|
if (isSetTempData)
|
||||||
{
|
{
|
||||||
fieldName = getSingleName(parameter, expression, null);
|
fieldName = GetSingleName(parameter, expression, null);
|
||||||
baseParameter.CommonTempData = fieldName;
|
baseParameter.CommonTempData = fieldName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fieldName = getSingleName(parameter, expression, isLeft);
|
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||||
if (expression.Type == PubConst.BoolType&&baseParameter.OperatorValue.IsNullOrEmpty()) {
|
if (expression.Type == PubConst.BoolType && baseParameter.OperatorValue.IsNullOrEmpty())
|
||||||
fieldName= "( "+fieldName+"=1 )";
|
{
|
||||||
|
fieldName = "( " + fieldName + "=1 )";
|
||||||
}
|
}
|
||||||
fieldName = AppendMember(parameter, isLeft, fieldName);
|
fieldName = AppendMember(parameter, isLeft, fieldName);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ResolveExpressType.WhereMultiple:
|
case ResolveExpressType.WhereMultiple:
|
||||||
if (isSetTempData)
|
if (isSetTempData)
|
||||||
{
|
{
|
||||||
fieldName = getMultipleName(parameter, expression, null);
|
fieldName = GetMultipleName(parameter, expression, null);
|
||||||
baseParameter.CommonTempData = fieldName;
|
baseParameter.CommonTempData = fieldName;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||||
fieldName = AppendMember(parameter, isLeft, fieldName);
|
fieldName = AppendMember(parameter, isLeft, fieldName);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ResolveExpressType.FieldSingle:
|
case ResolveExpressType.FieldSingle:
|
||||||
fieldName = getSingleName(parameter, expression, isLeft);
|
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||||
base.Context.Result.Append(fieldName);
|
base.Context.Result.Append(fieldName);
|
||||||
break;
|
break;
|
||||||
case ResolveExpressType.FieldMultiple:
|
case ResolveExpressType.FieldMultiple:
|
||||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||||
base.Context.Result.Append(fieldName);
|
base.Context.Result.Append(fieldName);
|
||||||
break;
|
break;
|
||||||
case ResolveExpressType.ArraySingle:
|
case ResolveExpressType.ArraySingle:
|
||||||
fieldName = getArrayName(parameter, expression, isLeft);
|
fieldName = GetArrayName(parameter, expression, isLeft);
|
||||||
base.Context.Result.Append(fieldName);
|
base.Context.Result.Append(fieldName);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -98,7 +104,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
private string AppendMember(ExpressionParameter parameter, bool? isLeft, string fieldName)
|
private string AppendMember(ExpressionParameter parameter, bool? isLeft, string fieldName)
|
||||||
{
|
{
|
||||||
if (parameter.BaseExpression is BinaryExpression|| (parameter.BaseParameter.CommonTempData!=null&¶meter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append)))
|
if (parameter.BaseExpression is BinaryExpression || (parameter.BaseParameter.CommonTempData != null && parameter.BaseParameter.CommonTempData.Equals(CommonTempDataType.Append)))
|
||||||
{
|
{
|
||||||
fieldName = string.Format(" {0} ", fieldName);
|
fieldName = string.Format(" {0} ", fieldName);
|
||||||
if (isLeft == true)
|
if (isLeft == true)
|
||||||
@@ -122,23 +128,23 @@ namespace SqlSugar
|
|||||||
return fieldName;
|
return fieldName;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string getMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
private string GetMultipleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||||
{
|
{
|
||||||
string shortName = expression.Expression.ToString();
|
string shortName = expression.Expression.ToString();
|
||||||
string fieldName = expression.Member.Name;
|
string fieldName = expression.Member.Name;
|
||||||
fieldName=this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
||||||
fieldName =Context.GetTranslationColumnName(shortName + "." + fieldName);
|
fieldName = Context.GetTranslationColumnName(shortName + "." + fieldName);
|
||||||
return fieldName;
|
return fieldName;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string getSingleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
private string GetSingleName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||||
{
|
{
|
||||||
string fieldName = expression.Member.Name;
|
string fieldName = expression.Member.Name;
|
||||||
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
||||||
fieldName = Context.GetTranslationColumnName(fieldName);
|
fieldName = Context.GetTranslationColumnName(fieldName);
|
||||||
return fieldName;
|
return fieldName;
|
||||||
}
|
}
|
||||||
private string getArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
private string GetArrayName(ExpressionParameter parameter, MemberExpression expression, bool? isLeft)
|
||||||
{
|
{
|
||||||
string fieldName = expression.Member.Name;
|
string fieldName = expression.Member.Name;
|
||||||
return fieldName;
|
return fieldName;
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user