Update exp to sql

This commit is contained in:
skx 2020-11-12 20:27:33 +08:00
parent de0f4fa0ce
commit 83fc19f63b
3 changed files with 42 additions and 3 deletions

View File

@ -38,9 +38,9 @@ namespace OrmTest
Ado();
Queryable();
QueryableAsync();
Thread();
Thread2();
Thread3();
//Thread();
//Thread2();
//Thread3();
}
}
}

View File

@ -84,6 +84,17 @@ namespace OrmTest
var list8=Db.Queryable<Order>().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList();
var result2 = Db.Queryable<Unit_SYS_USER>().Where(o => o.XH == UserLoginInfo.XH).Select(o => o.XH).ToSql();
var x = Db.Queryable<BoolTest1>().Select(it => new BoolTest2()
{
a =it.a
}).ToSql();
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest1] ", "Queryable");
x = Db.Queryable<BoolTest2>().Select(it => new BoolTest1()
{
a = it.a.Value
}).ToSql();
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable");
}
@ -360,4 +371,18 @@ namespace OrmTest
public Guid? Id { get; set; }
}
}
internal class BoolTest1
{
public BoolTest1()
{
}
public bool a { get; set; }
}
public class BoolTest2
{
public bool? a { get; set; }
}
}

View File

@ -343,6 +343,10 @@ namespace SqlSugar
this.Context.Result.IsLockCurrentParameter = true;
parameter.IsAppendTempDate();
this.Expression = item;
if (IsBoolValue(item))
{
this.Expression = (item as MemberExpression).Expression;
}
this.Start();
parameter.IsAppendResult();
this.Context.Result.Append(this.Context.GetAsString(asName, parameter.CommonTempData.ObjToString()));
@ -491,6 +495,16 @@ namespace SqlSugar
Check.ThrowNotSupportedException(item.GetType().Name);
}
}
private static bool IsBoolValue(Expression item)
{
return item.Type == UtilConstants.BoolType &&
(item is MemberExpression) &&
(item as MemberExpression).Expression != null &&
(item as MemberExpression).Expression.Type == typeof(bool?) &&
(item as MemberExpression).Member.Name == "Value";
}
protected static bool IsConvert(Expression item)
{
return item is UnaryExpression && item.NodeType == ExpressionType.Convert;