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() 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() 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() 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: case ResolveExpressType.WhereMultiple:
break; break;
case ResolveExpressType.SelectSingle: case ResolveExpressType.SelectSingle:
parameter=parameter + ",";
break;
case ResolveExpressType.SelectMultiple: case ResolveExpressType.SelectMultiple:
parameter = parameter + ",";
break; break;
case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldSingle:
break; break;

View File

@ -19,9 +19,10 @@ namespace SqlSugar
case ResolveExpressType.WhereMultiple: case ResolveExpressType.WhereMultiple:
break; break;
case ResolveExpressType.SelectSingle: case ResolveExpressType.SelectSingle:
SelectSingle(expression, parameter); Select(expression, parameter, true);
break; break;
case ResolveExpressType.SelectMultiple: case ResolveExpressType.SelectMultiple:
Select(expression, parameter, false);
break; break;
case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldSingle:
break; 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; int i = 0;
foreach (MemberBinding binding in expression.Bindings) foreach (MemberBinding binding in expression.Bindings)
@ -63,8 +64,16 @@ namespace SqlSugar
else else
{ {
var fieldNme = (memberExpression).Member.Name; var fieldNme = (memberExpression).Member.Name;
if (isSingle)
{
parameter.Context.Result.Append(fieldNme); 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: case ResolveExpressType.WhereMultiple:
break; break;
case ResolveExpressType.SelectSingle: case ResolveExpressType.SelectSingle:
SelectSingle(expression, parameter); Select(expression, parameter, true);
break; break;
case ResolveExpressType.SelectMultiple: case ResolveExpressType.SelectMultiple:
Select(expression, parameter, false);
break; break;
case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldSingle:
break; 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) if (expression.Arguments != null)
{ {
@ -57,10 +58,19 @@ namespace SqlSugar
parameter.Context.Result.Append(parameterName); parameter.Context.Result.Append(parameterName);
this.Context.Parameters.Add(new SugarParameter(parameterName, value)); this.Context.Parameters.Add(new SugarParameter(parameterName, value));
} }
else { else
{
var fieldNme = (memberExpression).Member.Name; var fieldNme = (memberExpression).Member.Name;
if (isSingle)
{
parameter.Context.Result.Append(fieldNme); 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\bin\Debug\Newtonsoft.Json.dll
F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.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.pdb
F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.csprojResolveAssemblyReference.cache

Binary file not shown.

Binary file not shown.