This commit is contained in:
sunkaixuan 2017-01-14 20:44:17 +08:00
parent 1a5f662a0a
commit e6422a5792
18 changed files with 41 additions and 12 deletions

Binary file not shown.

View File

@ -28,11 +28,21 @@ namespace OrmTest.ExpressionTest
private static void Multiple()
{
Expression<Func<Student,School, object>> exp = (it,school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id };
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
expContext.ResolveType = ResolveExpressType.SelectMultiple;
expContext.Resolve();
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
}
private static void MultipleDynamic()
{
Expression<Func<Student, School, object>> exp = (it, school) => new{ Name = "a", Id = it.Id, SchoolId = school.Id };
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
expContext.ResolveType = ResolveExpressType.SelectMultiple;
expContext.Resolve();
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
}
private static void single()
{

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -64,9 +64,8 @@ namespace SqlSugar
case ResolveExpressType.WhereMultiple:
break;
case ResolveExpressType.SelectSingle:
parameter=parameter + ",";
break;
case ResolveExpressType.SelectMultiple:
parameter = parameter + ",";
break;
case ResolveExpressType.FieldSingle:
break;

View File

@ -19,9 +19,10 @@ namespace SqlSugar
case ResolveExpressType.WhereMultiple:
break;
case ResolveExpressType.SelectSingle:
SelectSingle(expression, parameter);
Select(expression, parameter, true);
break;
case ResolveExpressType.SelectMultiple:
Select(expression, parameter, false);
break;
case ResolveExpressType.FieldSingle:
break;
@ -32,7 +33,7 @@ namespace SqlSugar
}
}
private void SelectSingle(MemberInitExpression expression, ExpressionParameter parameter)
public void Select(MemberInitExpression expression, ExpressionParameter parameter, bool isSingle)
{
int i = 0;
foreach (MemberBinding binding in expression.Bindings)
@ -63,7 +64,15 @@ namespace SqlSugar
else
{
var fieldNme = (memberExpression).Member.Name;
parameter.Context.Result.Append(fieldNme);
if (isSingle)
{
parameter.Context.Result.Append(fieldNme);
}
else
{
var shortName = memberExpression.Expression.ToString();
parameter.Context.Result.Append(shortName+"."+fieldNme);
}
}
}
}

View File

@ -19,9 +19,10 @@ namespace SqlSugar
case ResolveExpressType.WhereMultiple:
break;
case ResolveExpressType.SelectSingle:
SelectSingle(expression, parameter);
Select(expression, parameter, true);
break;
case ResolveExpressType.SelectMultiple:
Select(expression, parameter, false);
break;
case ResolveExpressType.FieldSingle:
break;
@ -32,7 +33,7 @@ namespace SqlSugar
}
}
private void SelectSingle(NewExpression expression, ExpressionParameter parameter)
private void Select(NewExpression expression, ExpressionParameter parameter, bool isSingle)
{
if (expression.Arguments != null)
{
@ -52,14 +53,23 @@ namespace SqlSugar
var memberExpression = (MemberExpression)item;
if (memberExpression.Expression.NodeType.IsIn(ExpressionType.Constant))
{
var value =ExpressionTool.GetMemberValue(memberExpression.Member, memberExpression);
var value = ExpressionTool.GetMemberValue(memberExpression.Member, memberExpression);
string parameterName = this.Context.SqlParameterKeyWord + "constant" + i;
parameter.Context.Result.Append(parameterName);
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
}
else {
else
{
var fieldNme = (memberExpression).Member.Name;
parameter.Context.Result.Append(fieldNme);
if (isSingle)
{
parameter.Context.Result.Append(fieldNme);
}
else
{
var shortName = memberExpression.Expression.ToString();
parameter.Context.Result.Append(shortName + "." + fieldNme);
}
}
}
}

Binary file not shown.

Binary file not shown.

View File

@ -3,3 +3,4 @@ F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\bin\Debug\SqlSugar.pdb
F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\bin\Debug\Newtonsoft.Json.dll
F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.dll
F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.pdb
F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.csprojResolveAssemblyReference.cache

Binary file not shown.

Binary file not shown.