mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-18 17:48:11 +08:00
Code optimization
This commit is contained in:
@@ -64,7 +64,13 @@ namespace OrmTest.Demo
|
|||||||
t12.Wait();
|
t12.Wait();
|
||||||
|
|
||||||
//update one columns
|
//update one columns
|
||||||
var count= db.Updateable<Student>().UpdateColumns(it => it.SchoolId == 1).Where(it => it.Id == 1).ExecuteCommand();
|
var count = db.Updateable<Student>().UpdateColumns(it => it.SchoolId == 1).Where(it => it.Id == 1).ExecuteCommand();
|
||||||
|
|
||||||
|
|
||||||
|
var t13 = db.Updateable<Student>().UpdateColumns(it => new Student() {
|
||||||
|
SchoolId = SqlFunc.Subqueryable<School>().Where(s=>s.Id==it.SchoolId).Select(s=>s.Id),
|
||||||
|
Name="newname"
|
||||||
|
}).Where(it => it.Id == 1).ExecuteCommand();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -48,7 +48,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
MemberAssignment memberAssignment = (MemberAssignment)binding;
|
MemberAssignment memberAssignment = (MemberAssignment)binding;
|
||||||
var type = memberAssignment.Member.ReflectedType;
|
var type = memberAssignment.Member.ReflectedType;
|
||||||
var memberName =this.Context.GetDbColumnName(type.Name, memberAssignment.Member.Name);
|
var memberName = this.Context.GetDbColumnName(type.Name, memberAssignment.Member.Name);
|
||||||
var item = memberAssignment.Expression;
|
var item = memberAssignment.Expression;
|
||||||
if ((item is MemberExpression) && ((MemberExpression)item).Expression == null)
|
if ((item is MemberExpression) && ((MemberExpression)item).Expression == null)
|
||||||
{
|
{
|
||||||
@@ -56,21 +56,20 @@ namespace SqlSugar
|
|||||||
string parameterName = AppendParameter(paramterValue);
|
string parameterName = AppendParameter(paramterValue);
|
||||||
this.Context.Result.Append(base.Context.GetEqString(memberName, parameterName));
|
this.Context.Result.Append(base.Context.GetEqString(memberName, parameterName));
|
||||||
}
|
}
|
||||||
else if (item is UnaryExpression || item.NodeType == ExpressionType.Constant || (item is MemberExpression) && ((MemberExpression)item).Expression.NodeType == ExpressionType.Constant)
|
else if (IsMethod(item))
|
||||||
|
{
|
||||||
|
item = (item as UnaryExpression).Operand;
|
||||||
|
MethodCall(parameter, memberName, item);
|
||||||
|
}
|
||||||
|
else if (IsConst(item))
|
||||||
{
|
{
|
||||||
base.Expression = item;
|
base.Expression = item;
|
||||||
base.Start();
|
base.Start();
|
||||||
string parameterName = this.Context.SqlParameterKeyWord + ExpressionConst.Const+ this.Context.ParameterIndex;
|
string parameterName = this.Context.SqlParameterKeyWord + ExpressionConst.Const + this.Context.ParameterIndex;
|
||||||
parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameterName));
|
parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameterName));
|
||||||
this.Context.Parameters.Add(new SugarParameter(parameterName, parameter.CommonTempData));
|
this.Context.Parameters.Add(new SugarParameter(parameterName, parameter.CommonTempData));
|
||||||
this.Context.ParameterIndex++;
|
this.Context.ParameterIndex++;
|
||||||
}
|
}
|
||||||
else if (item is MethodCallExpression)
|
|
||||||
{
|
|
||||||
base.Expression = item;
|
|
||||||
base.Start();
|
|
||||||
parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameter.CommonTempData.ObjToString()));
|
|
||||||
}
|
|
||||||
else if (item is MemberExpression)
|
else if (item is MemberExpression)
|
||||||
{
|
{
|
||||||
if (base.Context.Result.IsLockCurrentParameter == false)
|
if (base.Context.Result.IsLockCurrentParameter == false)
|
||||||
@@ -87,12 +86,29 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else if (item is BinaryExpression)
|
else if (item is BinaryExpression)
|
||||||
{
|
{
|
||||||
var result=GetNewExpressionValue(item);
|
var result = GetNewExpressionValue(item);
|
||||||
this.Context.Result.Append(base.Context.GetEqString(memberName, result));
|
this.Context.Result.Append(base.Context.GetEqString(memberName, result));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool IsConst(Expression item)
|
||||||
|
{
|
||||||
|
return item is UnaryExpression || item.NodeType == ExpressionType.Constant || (item is MemberExpression) && ((MemberExpression)item).Expression.NodeType == ExpressionType.Constant;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsMethod(Expression item)
|
||||||
|
{
|
||||||
|
return item is MethodCallExpression || (item is UnaryExpression && (item as UnaryExpression).Operand is MethodCallExpression);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MethodCall(ExpressionParameter parameter, string memberName, Expression item)
|
||||||
|
{
|
||||||
|
base.Expression = item;
|
||||||
|
base.Start();
|
||||||
|
parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameter.CommonTempData.ObjToString()));
|
||||||
|
}
|
||||||
|
|
||||||
private void Select(MemberInitExpression expression, ExpressionParameter parameter, bool isSingle)
|
private void Select(MemberInitExpression expression, ExpressionParameter parameter, bool isSingle)
|
||||||
{
|
{
|
||||||
foreach (MemberBinding binding in expression.Bindings)
|
foreach (MemberBinding binding in expression.Bindings)
|
||||||
@@ -107,5 +123,10 @@ namespace SqlSugar
|
|||||||
ResolveNewExpressions(parameter, item, memberName);
|
ResolveNewExpressions(parameter, item, memberName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool IsSubMethod(MethodCallExpression express, string methodName)
|
||||||
|
{
|
||||||
|
return SubTools.SubItemsConst.Any(it => it.Name == methodName) && express.Object != null && express.Object.Type.Name == "Subqueryable`1";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user