update exp to sql

This commit is contained in:
sunkaixuna 2021-12-25 14:58:12 +08:00
parent cf4ec53150
commit 3103209232
2 changed files with 21 additions and 5 deletions

View File

@ -116,6 +116,19 @@ namespace OrmTest
.Where(it => it.a) .Where(it => it.a)
.ExecuteCommand(); .ExecuteCommand();
Db.Queryable<Unitbluecopy>().Select(it => new Unitbluecopy() { x = it.x - SqlFunc.Subqueryable<Unitbluecopy>().Select(s => s.Id) }).ToList();
Db.Updateable<Unitbluecopy>()
.SetColumns(it => new Unitbluecopy() { x=it.x- SqlFunc.Subqueryable<Unitbluecopy>().Select(s=>s.Id) })
.Where(it => it.Id>0)
.ExecuteCommand();
Db.Updateable<Unitbluecopy>()
.SetColumns(it => it.x == it.x - SqlFunc.Subqueryable<Unitbluecopy>().Select(s => s.Id) )
.Where(it => it.Id > 0)
.ExecuteCommand();
Db.Updateable<Unitbluecopy>(new Unitbluecopy() { }).WhereColumns(it => it.Id).ExecuteCommand(); Db.Updateable<Unitbluecopy>(new Unitbluecopy() { }).WhereColumns(it => it.Id).ExecuteCommand();
Db.Updateable<Unitbluecopy>(Db.Queryable<Unitbluecopy>().ToList()).WhereColumns(it => it.Id).ExecuteCommand(); Db.Updateable<Unitbluecopy>(Db.Queryable<Unitbluecopy>().ToList()).WhereColumns(it => it.Id).ExecuteCommand();
} }

View File

@ -57,12 +57,15 @@ namespace SqlSugar
{ {
var subExp = (context.Expression as BinaryExpression).Left is MethodCallExpression ? (context.Expression as BinaryExpression).Left : (context.Expression as BinaryExpression).Right; var subExp = (context.Expression as BinaryExpression).Left is MethodCallExpression ? (context.Expression as BinaryExpression).Left : (context.Expression as BinaryExpression).Right;
var meExp = ((subExp as MethodCallExpression).Object as MethodCallExpression).Arguments[0] as LambdaExpression; if (subExp is MethodCallExpression)
var selfParameterName = meExp.Parameters.First().Name;
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Left as MemberExpression).Expression as ParameterExpression).Name;
if (context.SingleTableNameSubqueryShortName == selfParameterName)
{ {
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Right as MemberExpression).Expression as ParameterExpression).Name; var meExp = ((subExp as MethodCallExpression).Object as MethodCallExpression).Arguments[0] as LambdaExpression;
var selfParameterName = meExp.Parameters.First().Name;
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Left as MemberExpression).Expression as ParameterExpression).Name;
if (context.SingleTableNameSubqueryShortName == selfParameterName)
{
context.SingleTableNameSubqueryShortName = (((meExp.Body as BinaryExpression).Right as MemberExpression).Expression as ParameterExpression).Name;
}
} }
} }
else if (context.RootExpression!=null&&context.Expression.GetType().Name == "SimpleBinaryExpression") else if (context.RootExpression!=null&&context.Expression.GetType().Name == "SimpleBinaryExpression")