This commit is contained in:
sunkaixuan
2017-09-15 19:12:35 +08:00
parent 99ee375619
commit 55bb54b82b
2 changed files with 41 additions and 15 deletions

View File

@@ -26,6 +26,7 @@ namespace OrmTest.UnitTest
single3();
single4();
single5();
single6();
Multiple();
Multiple2();
singleDynamic();
@@ -161,7 +162,22 @@ namespace OrmTest.UnitTest
@"( @constant0<>'' AND @constant0 IS NOT NULL )", new List<SugarParameter>() {
new SugarParameter("@constant0",p)
}, selectorValue, pars,
"Select.single4 Error");
"Select.single5 Error");
}
private void single6()
{
var p = (DateTime?)DateTime.Now;
Expression<Func<Student, object>> exp = it => p.Value;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.IsSingle = false;
expContext.Resolve(exp, ResolveExpressType.FieldSingle);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
@" @Const0 ", new List<SugarParameter>() {
new SugarParameter("@Const0",p)
}, selectorValue, pars,
"Select.single6 Error");
}
private void singleDynamic()

View File

@@ -42,7 +42,7 @@ namespace SqlSugar
}
else if (isValueBool)
{
ResolveValueBool(parameter, baseParameter, expression,isLeft, isSingle);
ResolveValueBool(parameter, baseParameter, expression, isLeft, isSingle);
}
else if (isValue)
{
@@ -105,22 +105,32 @@ namespace SqlSugar
string fieldName = string.Empty;
if (isSetTempData)
{
fieldName = GetName(parameter, expression, null, isSingle);
baseParameter.CommonTempData = fieldName;
return;
if (ExpressionTool.IsConstExpression(expression))
{
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
base.AppendValue(parameter, isLeft, value);
}
else
{
fieldName = GetName(parameter, expression, null, isSingle);
baseParameter.CommonTempData = fieldName;
}
}
if (ExpressionTool.IsConstExpression(expression))
else
{
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
base.AppendValue(parameter, isLeft, value);
return;
if (ExpressionTool.IsConstExpression(expression))
{
var value = ExpressionTool.GetMemberValue(expression.Member, expression);
base.AppendValue(parameter, isLeft, value);
return;
}
fieldName = GetName(parameter, expression, isLeft, isSingle);
if (expression.Type == UtilConstants.BoolType && baseParameter.OperatorValue.IsNullOrEmpty())
{
fieldName = "( " + fieldName + "=1 )";
}
AppendMember(parameter, isLeft, fieldName);
}
fieldName = GetName(parameter, expression, isLeft, isSingle);
if (expression.Type == UtilConstants.BoolType && baseParameter.OperatorValue.IsNullOrEmpty())
{
fieldName = "( " + fieldName + "=1 )";
}
AppendMember(parameter, isLeft, fieldName);
}
#endregion