提交 084519a9 编写于 作者: s0611163's avatar s0611163

优化Where解析

上级 610ac36a
...@@ -141,7 +141,7 @@ namespace Dapper.LiteSql ...@@ -141,7 +141,7 @@ namespace Dapper.LiteSql
ExpValue left = VisitConditions(exp.Left); ExpValue left = VisitConditions(exp.Left);
ExpValue right = VisitConditions(exp.Right); ExpValue right = VisitConditions(exp.Right);
result.Sql = string.Format(" {0} {1} {2} ", left.Sql, ToSqlOperator(exp.NodeType), right.Sql); result.Sql = string.Format(" ({0} {1} {2}) ", left.Sql, ToSqlOperator(exp.NodeType), right.Sql);
result.Type = ExpValueType.SqlAndDbParameter; result.Type = ExpValueType.SqlAndDbParameter;
result.DbParameters.AddRange(left.DbParameters); result.DbParameters.AddRange(left.DbParameters);
...@@ -208,13 +208,13 @@ namespace Dapper.LiteSql ...@@ -208,13 +208,13 @@ namespace Dapper.LiteSql
string markKey = _provider.GetParameterName(left.MemberAliasName, parameterType); string markKey = _provider.GetParameterName(left.MemberAliasName, parameterType);
result.DbParameters.Add(_provider.GetDbParameter(left.MemberAliasName, right.Value)); result.DbParameters.Add(_provider.GetDbParameter(left.MemberAliasName, right.Value));
result.Sql = string.Format(" {0}.{1} {2} {3} ", left.MemberParentName, left.MemberDBField, ToSqlOperator(exp.NodeType), string.Format(sqlValue.Sql, markKey)); result.Sql = string.Format(" ({0}.{1} {2} {3}) ", left.MemberParentName, left.MemberDBField, ToSqlOperator(exp.NodeType), string.Format(sqlValue.Sql, markKey));
} }
else else
{ {
string markKey = _provider.GetParameterName(left.MemberAliasName, right.Value.GetType()); string markKey = _provider.GetParameterName(left.MemberAliasName, right.Value.GetType());
result.DbParameters.Add(_provider.GetDbParameter(left.MemberAliasName, right.Value)); result.DbParameters.Add(_provider.GetDbParameter(left.MemberAliasName, right.Value));
result.Sql = string.Format(" {0}.{1} {2} {3} ", left.MemberParentName, left.MemberDBField, ToSqlOperator(exp.NodeType), markKey); result.Sql = string.Format(" ({0}.{1} {2} {3}) ", left.MemberParentName, left.MemberDBField, ToSqlOperator(exp.NodeType), markKey);
} }
} }
} }
......
...@@ -316,15 +316,19 @@ namespace PerformanceTest ...@@ -316,15 +316,19 @@ namespace PerformanceTest
{ {
var session = LiteSqlFactory.GetSession(); var session = LiteSqlFactory.GetSession();
ISqlString sql = session.CreateSql(@" session.OnExecuting = (s, p) =>
select t.* {
from sys_user t if (_printSql)
where t.id > @id {
and t.real_name like @remark", 20, "%测试%"); Console.WriteLine(s);
}
};
sql.Append(" order by t.create_time desc, t.id asc"); List<SysUser> userList = session.Queryable<SysUser>()
.Where(t => t.Id > 20 && t.Remark.Contains("测试"))
.OrderByDescending(t => t.CreateTime)
.OrderBy(t => t.Id).ToList();
List<SysUser> userList = sql.QueryList<SysUser>();
Log("查询结果 count=" + userList.Count.ToString()); Log("查询结果 count=" + userList.Count.ToString());
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册