This commit is contained in:
sunkaixuan
2017-05-21 13:32:10 +08:00
parent fdcb9d643d
commit ae181dba15
3 changed files with 11 additions and 8 deletions

View File

@@ -90,15 +90,16 @@ UNION ALL
//Re Set Value //Re Set Value
var t8 = db.Updateable(updateObj) var t8 = db.Updateable(updateObj)
.ReSetValue(it=>it.Name==(it.SchoolId+"")).ToSql(); .ReSetValue(it=>it.Name==(it.Name+1)).ToSql();
base.Check(@"UPDATE [Student] SET base.Check(@"UPDATE [Student] SET
[SchoolId] = @SchoolId, ( [Name] = (@Const0)),[CreateTime] = @CreateTime,[TestId] = @TestId WHERE[Id] = @Id", [SchoolId]=@SchoolId, [Name] =( [Name] + @Const0 ),[CreateTime]=@CreateTime,[TestId]=@TestId WHERE [Id]=@Id",
new List<SugarParameter>() { new List<SugarParameter>() {
new SugarParameter("@SchoolId",0), new SugarParameter("@SchoolId",0),
new SugarParameter("@Id",1), new SugarParameter("@Id",1),
new SugarParameter("@TestId",0), new SugarParameter("@TestId",0),
new SugarParameter("@CreateTime", Convert.ToDateTime("2017-05-21 09:56:12.610")), new SugarParameter("@CreateTime", Convert.ToDateTime("2017-05-21 09:56:12.610")),
new SugarParameter("@Const0", "jack") new SugarParameter("@Const0", 1),
new SugarParameter("@Name", "jack")
}, t8.Key, t8.Value, "Update t8 error" }, t8.Key, t8.Value, "Update t8 error"
); );

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace SqlSugar namespace SqlSugar
@@ -43,7 +44,7 @@ namespace SqlSugar
public IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression) public IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression)
{ {
var expResult = UpdateBuilder.GetExpressionValue(setValueExpression, ResolveExpressType.WhereSingle); var expResult = UpdateBuilder.GetExpressionValue(setValueExpression, ResolveExpressType.WhereSingle);
var resultString = expResult.GetResultString(); var resultString =Regex.Match(expResult.GetResultString(),@"\((.+)\)").Groups[1].Value;
LambdaExpression lambda = setValueExpression as LambdaExpression; LambdaExpression lambda = setValueExpression as LambdaExpression;
var expression = lambda.Body; var expression = lambda.Body;
Check.Exception(!(expression is BinaryExpression), "Expression format error"); Check.Exception(!(expression is BinaryExpression), "Expression format error");

View File

@@ -18,18 +18,19 @@ namespace SqlSugar
case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldSingle:
case ResolveExpressType.FieldMultiple: case ResolveExpressType.FieldMultiple:
base.Expression = expression.Operand; base.Expression = expression.Operand;
if (base.Expression is MemberExpression || base.Expression is ConstantExpression) if (base.Expression is BinaryExpression||parameter.BaseExpression is BinaryExpression)
{ {
BaseParameter.ChildExpression = base.Expression; BaseParameter.ChildExpression = base.Expression;
parameter.CommonTempData = CommonTempDataType.ChildNodeSet; parameter.CommonTempData = CommonTempDataType.Default;
base.Start(); base.Start();
parameter.BaseParameter.CommonTempData = parameter.CommonTempData; parameter.BaseParameter.CommonTempData = parameter.CommonTempData;
parameter.BaseParameter.ChildExpression = base.Expression; parameter.BaseParameter.ChildExpression = base.Expression;
parameter.CommonTempData = null; parameter.CommonTempData = null;
} }
else if (base.Expression is BinaryExpression) { else if (base.Expression is MemberExpression || base.Expression is ConstantExpression)
{
BaseParameter.ChildExpression = base.Expression; BaseParameter.ChildExpression = base.Expression;
parameter.CommonTempData = CommonTempDataType.Default; parameter.CommonTempData = CommonTempDataType.ChildNodeSet;
base.Start(); base.Start();
parameter.BaseParameter.CommonTempData = parameter.CommonTempData; parameter.BaseParameter.CommonTempData = parameter.CommonTempData;
parameter.BaseParameter.ChildExpression = base.Expression; parameter.BaseParameter.ChildExpression = base.Expression;