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();
|
||||
for (int i = 0; i < base.Count; i++)
|
||||
{
|
||||
|
||||
whereSingle21();
|
||||
whereSingle20();
|
||||
whereSingle19();
|
||||
whereSingle18();
|
||||
whereSingle17();
|
||||
whereSingle16();
|
||||
@@ -308,6 +312,43 @@ namespace OrmTest.UnitTest
|
||||
|
||||
}, "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
|
||||
|
||||
@@ -14,7 +14,12 @@ namespace SqlSugar
|
||||
var isLeft = parameter.IsLeft;
|
||||
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
|
||||
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")
|
||||
{
|
||||
expression = expression.Expression as MemberExpression;
|
||||
}
|
||||
else if (expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter)
|
||||
{
|
||||
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
|
||||
if (isSetTempData)
|
||||
{
|
||||
@@ -31,7 +36,7 @@ namespace SqlSugar
|
||||
switch (parameter.Context.ResolveType)
|
||||
{
|
||||
case ResolveExpressType.SelectSingle:
|
||||
fieldName = getSingleName(parameter, expression, isLeft);
|
||||
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||
if (isSetTempData)
|
||||
{
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
@@ -42,7 +47,7 @@ namespace SqlSugar
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.SelectMultiple:
|
||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
||||
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||
if (isSetTempData)
|
||||
{
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
@@ -55,13 +60,14 @@ namespace SqlSugar
|
||||
case ResolveExpressType.WhereSingle:
|
||||
if (isSetTempData)
|
||||
{
|
||||
fieldName = getSingleName(parameter, expression, null);
|
||||
fieldName = GetSingleName(parameter, expression, null);
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = getSingleName(parameter, expression, isLeft);
|
||||
if (expression.Type == PubConst.BoolType&&baseParameter.OperatorValue.IsNullOrEmpty()) {
|
||||
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||
if (expression.Type == PubConst.BoolType && baseParameter.OperatorValue.IsNullOrEmpty())
|
||||
{
|
||||
fieldName = "( " + fieldName + "=1 )";
|
||||
}
|
||||
fieldName = AppendMember(parameter, isLeft, fieldName);
|
||||
@@ -70,25 +76,25 @@ namespace SqlSugar
|
||||
case ResolveExpressType.WhereMultiple:
|
||||
if (isSetTempData)
|
||||
{
|
||||
fieldName = getMultipleName(parameter, expression, null);
|
||||
fieldName = GetMultipleName(parameter, expression, null);
|
||||
baseParameter.CommonTempData = fieldName;
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
||||
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||
fieldName = AppendMember(parameter, isLeft, fieldName);
|
||||
}
|
||||
break;
|
||||
case ResolveExpressType.FieldSingle:
|
||||
fieldName = getSingleName(parameter, expression, isLeft);
|
||||
fieldName = GetSingleName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
break;
|
||||
case ResolveExpressType.FieldMultiple:
|
||||
fieldName = getMultipleName(parameter, expression, isLeft);
|
||||
fieldName = GetMultipleName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
break;
|
||||
case ResolveExpressType.ArraySingle:
|
||||
fieldName = getArrayName(parameter, expression, isLeft);
|
||||
fieldName = GetArrayName(parameter, expression, isLeft);
|
||||
base.Context.Result.Append(fieldName);
|
||||
break;
|
||||
default:
|
||||
@@ -122,7 +128,7 @@ namespace SqlSugar
|
||||
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 fieldName = expression.Member.Name;
|
||||
@@ -131,14 +137,14 @@ namespace SqlSugar
|
||||
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;
|
||||
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
||||
fieldName = Context.GetTranslationColumnName(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;
|
||||
return fieldName;
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user