mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
-
This commit is contained in:
parent
1a5f662a0a
commit
e6422a5792
Binary file not shown.
@ -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.
Binary file not shown.
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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.
@ -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
|
||||
|
BIN
SqlSugar/obj/Debug/SqlSugar.csprojResolveAssemblyReference.cache
Normal file
BIN
SqlSugar/obj/Debug/SqlSugar.csprojResolveAssemblyReference.cache
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user