Update exp to sql

This commit is contained in:
sunkaixuan
2022-09-17 15:38:17 +08:00
parent 71e7027279
commit 6eb2819705
4 changed files with 51 additions and 0 deletions

View File

@@ -211,6 +211,7 @@ namespace SqlSugar
}
public ISugarQueryable<T> Filter(Type type)
{
this.Context.InitMappingInfo(type);
var whereString= QueryBuilder.GetFilters(type);
if (whereString.HasValue())
{
@@ -1059,6 +1060,30 @@ namespace SqlSugar
else
{
var selects = this.QueryBuilder.GetSelectValueByString();
if (selects.ObjToString().ToLower().IsContainsIn(".","("," as "))
{
return this.Select<TResult>(selects);
}
var resultColumns=this.Context.EntityMaintenance.GetEntityInfo<TResult>().Columns;
var dbColumns = this.EntityInfo.Columns.Where(it=>!it.IsIgnore);
StringBuilder sb = new StringBuilder();
foreach (var item in resultColumns)
{
var firstColumn= dbColumns.FirstOrDefault(z =>
z.PropertyName.EqualCase(item.PropertyName) ||
z.DbColumnName.EqualCase(item.PropertyName));
if (firstColumn != null)
{
var dbColumnName = firstColumn.DbColumnName;
var AsName = item.PropertyName;
sb.Append($"{this.SqlBuilder.GetTranslationColumnName(dbColumnName)} AS {AsName} ,");
}
}
selects = sb.ToString().TrimEnd(',');
if (selects == "")
{
selects = "*";
}
return this.Select<TResult>(selects);
}
}

View File

@@ -130,6 +130,14 @@ namespace SqlSugar
return newExp;
}
public static string GetMethodName(Expression expression)
{
if (expression is MethodCallExpression)
{
return (expression as MethodCallExpression).Method.Name;
}
return null;
}
public static Type GetMemberInfoType(MemberInfo member)
{

View File

@@ -530,6 +530,11 @@ namespace SqlSugar
}
}
}
else if (IsExtSqlFuncObj(item))
{
var value = GetNewExpressionValue(item);
parameter.Context.Result.Append($" {value} AS {asName} ");
}
else
{
asName = GetAsNameResolveAnObject(parameter, item, asName, isSameType);
@@ -744,6 +749,11 @@ namespace SqlSugar
#endregion
#region Validate
private bool IsExtSqlFuncObj(Expression item)
{
return this.Context.SqlFuncServices != null && item is MethodCallExpression && this.Context.SqlFuncServices.Any(it => it.UniqueMethodName == ExpressionTool.GetMethodName(item));
}
private bool IsNullValue(ExpressionParameter parameter, object value)
{
return value == null

View File

@@ -30,6 +30,10 @@ namespace SqlSugar
}
public ISugarQueryable<T> OrderBy(List<OrderByModel> models)
{
if (models == null || models.Count == 0)
{
return this;
}
var orderObj = this.SqlBuilder.OrderByModelToSql(models);
this.OrderBy(orderObj.Key);
this.QueryBuilder.Parameters.AddRange(orderObj.Value);
@@ -37,6 +41,10 @@ namespace SqlSugar
}
public ISugarQueryable<T> GroupBy(List<GroupByModel> models)
{
if (models == null || models.Count == 0)
{
return this;
}
var orderObj = this.SqlBuilder.GroupByModelToSql(models);
this.GroupBy(orderObj.Key);
this.QueryBuilder.Parameters.AddRange(orderObj.Value);