mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-23 22:11:36 +08:00
-
This commit is contained in:
parent
2ea4a63563
commit
a99c807ff8
Binary file not shown.
@ -13,11 +13,29 @@ namespace OrmTest.ExpressionTest
|
||||
{
|
||||
internal static void Init()
|
||||
{
|
||||
Expression<Func<Student, object>> exp = it => new Program() { x = "a" };
|
||||
|
||||
o1();
|
||||
o2();
|
||||
}
|
||||
|
||||
private static void o1()
|
||||
{
|
||||
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id=it.Id };
|
||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
|
||||
expContext.ResolveType = ResolveExpressType.SelectSingle;
|
||||
expContext.Resolve();
|
||||
var x = expContext.Result.GetString();
|
||||
var pars = expContext.Parameters;
|
||||
}
|
||||
|
||||
private static void o2()
|
||||
{
|
||||
Expression<Func<Student, object>> exp = it =>new { x = "a" };
|
||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
|
||||
expContext.ResolveType = ResolveExpressType.SelectSingle;
|
||||
expContext.Resolve();
|
||||
var x = expContext.Result.GetString();
|
||||
var pars = expContext.Parameters;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
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.
@ -87,9 +87,13 @@ namespace SqlSugar
|
||||
{
|
||||
return new MemberInitExpressionResolve(parameter);
|
||||
}
|
||||
else if (exp != null && exp.NodeType.IsIn(ExpressionType.New, ExpressionType.NewArrayBounds, ExpressionType.NewArrayInit))
|
||||
else if (exp is NewExpression)
|
||||
{
|
||||
Check.ThrowNotSupportedException("ExpressionType.New、ExpressionType.NewArrayBounds and ExpressionType.NewArrayInit");
|
||||
return new NewExpressionResolve(parameter);
|
||||
}
|
||||
else if (exp != null && exp.NodeType.IsIn(ExpressionType.NewArrayBounds, ExpressionType.NewArrayInit))
|
||||
{
|
||||
Check.ThrowNotSupportedException("ExpressionType.NewArrayBounds and ExpressionType.NewArrayInit");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public class NewExpressionResolve : BaseResolve
|
||||
{
|
||||
public NewExpressionResolve(ExpressionParameter parameter) : base(parameter)
|
||||
{
|
||||
var expression = base.Expression as NewExpression;
|
||||
switch (parameter.Context.ResolveType)
|
||||
{
|
||||
case ResolveExpressType.WhereSingle:
|
||||
break;
|
||||
case ResolveExpressType.WhereMultiple:
|
||||
break;
|
||||
case ResolveExpressType.SelectSingle:
|
||||
SelectSingle(expression, parameter);
|
||||
break;
|
||||
case ResolveExpressType.SelectMultiple:
|
||||
break;
|
||||
case ResolveExpressType.FieldSingle:
|
||||
break;
|
||||
case ResolveExpressType.FieldMultiple:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectSingle(NewExpression expression, ExpressionParameter parameter)
|
||||
{
|
||||
if (expression.Arguments != null)
|
||||
{
|
||||
int i = 0;
|
||||
foreach (var item in expression.Arguments)
|
||||
{
|
||||
++i;
|
||||
if (item.NodeType == ExpressionType.Constant)
|
||||
{
|
||||
var value = ((ConstantExpression)item).Value;
|
||||
string parameterName = this.Context.SqlParameterKeyWord + "constant" + i;
|
||||
parameter.Context.Result.Append(parameterName);
|
||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
|
||||
}
|
||||
else
|
||||
{
|
||||
var memberExpression = (MemberExpression)Expression;
|
||||
var fieldNme = (memberExpression).Member.Name;
|
||||
parameter.Context.Result.Append(fieldNme);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -125,6 +125,7 @@
|
||||
<Compile Include="ExpressionsToSql\ResolveItems\LambdaExpressionResolve.cs" />
|
||||
<Compile Include="ExpressionsToSql\ResolveItems\MemberExpressionResolve.cs" />
|
||||
<Compile Include="ExpressionsToSql\ResolveItems\MethodCallExpressionResolve.cs" />
|
||||
<Compile Include="ExpressionsToSql\ResolveItems\NewExpressionResolve.cs" />
|
||||
<Compile Include="ExpressionsToSql\ResolveItems\UnaryExpressionResolve.cs" />
|
||||
<Compile Include="ExpressionsToSql\Common\ExpResolveAccessory.cs" />
|
||||
<Compile Include="ExpressionsToSql\ExpressionContext.cs" />
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user