mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 07:22:57 +08:00
Update navigate query
This commit is contained in:
parent
4cd14128ff
commit
5a8bc73124
@ -32,6 +32,13 @@ namespace OrmTest
|
|||||||
.Where(t => t.DeleteTime == null)
|
.Where(t => t.DeleteTime == null)
|
||||||
.OrderBy(t => t.StationCode, OrderByType.Asc)
|
.OrderBy(t => t.StationCode, OrderByType.Asc)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
db.Aop.OnLogExecuting = (s, p) =>
|
||||||
|
{
|
||||||
|
Console.WriteLine(s);
|
||||||
|
};
|
||||||
|
var data2 = db.Queryable<StationEntity>()
|
||||||
|
.Where(x=>x.StationConfigs.Any(z=>z.BaseStationConfig.KeyID==x.LineID))
|
||||||
|
.ToList();
|
||||||
var b1 = DateTime.Now.Subtract(b).TotalMilliseconds;
|
var b1 = DateTime.Now.Subtract(b).TotalMilliseconds;
|
||||||
|
|
||||||
Console.WriteLine("#### SqlQueryable End ####");
|
Console.WriteLine("#### SqlQueryable End ####");
|
||||||
|
@ -53,6 +53,19 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<ParameterExpression> ExpressionParameters(Expression expression)
|
||||||
|
{
|
||||||
|
List<ParameterExpression> parameters = null;
|
||||||
|
if (expression is LambdaExpression)
|
||||||
|
{
|
||||||
|
if ((expression as LambdaExpression).Parameters != null)
|
||||||
|
{
|
||||||
|
parameters = (expression as LambdaExpression).Parameters.ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return parameters;
|
||||||
|
}
|
||||||
|
|
||||||
public static object GetValue(object value,ExpressionContext context)
|
public static object GetValue(object value,ExpressionContext context)
|
||||||
{
|
{
|
||||||
if (value == null) return value;
|
if (value == null) return value;
|
||||||
|
@ -322,6 +322,7 @@ namespace SqlSugar
|
|||||||
public string GetNewExpressionValue(Expression item)
|
public string GetNewExpressionValue(Expression item)
|
||||||
{
|
{
|
||||||
var newContext = this.Context.GetCopyContextWithMapping();
|
var newContext = this.Context.GetCopyContextWithMapping();
|
||||||
|
newContext.SugarContext = this.Context.SugarContext;
|
||||||
newContext.Resolve(item, this.Context.IsJoin ? ResolveExpressType.WhereMultiple : ResolveExpressType.WhereSingle);
|
newContext.Resolve(item, this.Context.IsJoin ? ResolveExpressType.WhereMultiple : ResolveExpressType.WhereSingle);
|
||||||
this.Context.Index = newContext.Index;
|
this.Context.Index = newContext.Index;
|
||||||
this.Context.ParameterIndex = newContext.ParameterIndex;
|
this.Context.ParameterIndex = newContext.ParameterIndex;
|
||||||
@ -331,6 +332,19 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return newContext.Result.GetResultString();
|
return newContext.Result.GetResultString();
|
||||||
}
|
}
|
||||||
|
public string GetNewExpressionValue(Expression item,ResolveExpressType type)
|
||||||
|
{
|
||||||
|
var newContext = this.Context.GetCopyContextWithMapping();
|
||||||
|
newContext.SugarContext = this.Context.SugarContext;
|
||||||
|
newContext.Resolve(item, type);
|
||||||
|
this.Context.Index = newContext.Index;
|
||||||
|
this.Context.ParameterIndex = newContext.ParameterIndex;
|
||||||
|
if (newContext.Parameters.HasValue())
|
||||||
|
{
|
||||||
|
this.Context.Parameters.AddRange(newContext.Parameters);
|
||||||
|
}
|
||||||
|
return newContext.Result.GetResultString();
|
||||||
|
}
|
||||||
|
|
||||||
protected void ResolveNewExpressions(ExpressionParameter parameter, Expression item, string asName)
|
protected void ResolveNewExpressions(ExpressionParameter parameter, Expression item, string asName)
|
||||||
{
|
{
|
||||||
|
@ -14,6 +14,7 @@ namespace SqlSugar
|
|||||||
private EntityInfo ProPertyEntity;
|
private EntityInfo ProPertyEntity;
|
||||||
private Navigate Navigat;
|
private Navigate Navigat;
|
||||||
public string ShorName;
|
public string ShorName;
|
||||||
|
public string PropertyShortName;
|
||||||
private string MemberName;
|
private string MemberName;
|
||||||
private string MethodName;
|
private string MethodName;
|
||||||
private string whereSql;
|
private string whereSql;
|
||||||
@ -41,8 +42,13 @@ namespace SqlSugar
|
|||||||
result = ValidateNav(result, memberExp.Arguments[0] as MemberExpression, memberExp.Arguments[0]);
|
result = ValidateNav(result, memberExp.Arguments[0] as MemberExpression, memberExp.Arguments[0]);
|
||||||
if (memberExp.Arguments.Count > 1)
|
if (memberExp.Arguments.Count > 1)
|
||||||
{
|
{
|
||||||
|
var pars = ExpressionTool.ExpressionParameters(memberExp.Arguments.Last());
|
||||||
|
if (pars != null && pars.Any(z => z.Type == ProPertyEntity.Type))
|
||||||
|
{
|
||||||
|
PropertyShortName = pars.First(z => z.Type == ProPertyEntity.Type).Name;
|
||||||
|
}
|
||||||
whereSql = GetWhereSql(memberExp);
|
whereSql = GetWhereSql(memberExp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -51,8 +57,16 @@ namespace SqlSugar
|
|||||||
private string GetWhereSql(MethodCallExpression memberExp)
|
private string GetWhereSql(MethodCallExpression memberExp)
|
||||||
{
|
{
|
||||||
var whereExp = memberExp.Arguments[1];
|
var whereExp = memberExp.Arguments[1];
|
||||||
var result= this.methodCallExpressionResolve.GetNewExpressionValue(whereExp);
|
if (PropertyShortName.HasValue())
|
||||||
return result;
|
{
|
||||||
|
var result = this.methodCallExpressionResolve.GetNewExpressionValue(whereExp, ResolveExpressType.WhereMultiple);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var result = this.methodCallExpressionResolve.GetNewExpressionValue(whereExp);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ValidateNav(bool result, MemberExpression memberExp, Expression childExpression)
|
private bool ValidateNav(bool result, MemberExpression memberExp, Expression childExpression)
|
||||||
@ -129,6 +143,10 @@ namespace SqlSugar
|
|||||||
pk = queryable.QueryBuilder.Builder.GetTranslationColumnName(pk);
|
pk = queryable.QueryBuilder.Builder.GetTranslationColumnName(pk);
|
||||||
name = queryable.QueryBuilder.Builder.GetTranslationColumnName(name);
|
name = queryable.QueryBuilder.Builder.GetTranslationColumnName(name);
|
||||||
//selectName = queryable.QueryBuilder.Builder.GetTranslationColumnName(selectName);
|
//selectName = queryable.QueryBuilder.Builder.GetTranslationColumnName(selectName);
|
||||||
|
if (PropertyShortName.HasValue())
|
||||||
|
{
|
||||||
|
queryable.QueryBuilder.TableShortName = PropertyShortName;
|
||||||
|
}
|
||||||
mapper.Sql = queryable
|
mapper.Sql = queryable
|
||||||
.AS(this.ProPertyEntity.DbTableName)
|
.AS(this.ProPertyEntity.DbTableName)
|
||||||
.WhereIF(!string.IsNullOrEmpty(whereSql), whereSql)
|
.WhereIF(!string.IsNullOrEmpty(whereSql), whereSql)
|
||||||
|
Loading…
Reference in New Issue
Block a user