diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UCustom012.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom012.cs index f1f4c5ad7..dc66aa783 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UCustom012.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UCustom012.cs @@ -86,9 +86,11 @@ namespace OrmTest db.Insertable(new ABMapping1() { AId=1,BId=1 }).ExecuteCommand(); db.Insertable(new ABMapping1() { AId =2, BId = 1 }).ExecuteCommand(); db.Insertable(new ABMapping1() { AId = 2, BId = 2 }).ExecuteCommand(); + var list3= db.Queryable() - .Includes(x => x.BList) + .Includes(x => x.BList.Where(it=>it.Id==1).ToList()) .Where(x=>x.BList.Any()).ToList(); + var list31 = db.Queryable().Includes(x => x.BList,x=>x.AList).ToList(); db.CodeFirst.InitTables(typeof(Tree1)); diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs index 045672314..2a824fd82 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs @@ -179,7 +179,7 @@ namespace SqlSugar CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name })); var sql = GetWhereSql(); - var bList = selector(this.Context.Queryable().AS(bEntityInfo.DbTableName).Where(conditionalModels2).WhereIF(sql.WhereString.HasValue(),sql.WhereString).OrderByIF(sql.OrderByString.HasValue(),sql.OrderByString)); + var bList = selector(this.Context.Queryable().AS(bEntityInfo.DbTableName).AddParameters(sql.Parameters).Where(conditionalModels2).WhereIF(sql.WhereString.HasValue(),sql.WhereString).OrderByIF(sql.OrderByString.HasValue(),sql.OrderByString)); if (bList.HasValue()) { foreach (var listItem in list) @@ -243,7 +243,7 @@ namespace SqlSugar CSharpTypeName = listItemPkColumn.PropertyInfo.PropertyType.Name })); var sqlObj = GetWhereSql(); - var navList = selector(this.Context.Queryable().AS(navEntityInfo.DbTableName).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(),sqlObj.WhereString).OrderByIF(sqlObj.OrderByString.HasValue(),sqlObj.OrderByString)); + var navList = selector(this.Context.Queryable().AS(navEntityInfo.DbTableName).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(),sqlObj.WhereString).OrderByIF(sqlObj.OrderByString.HasValue(),sqlObj.OrderByString)); if (navList.HasValue()) { foreach (var item in list) @@ -268,23 +268,25 @@ namespace SqlSugar List oredrBy = new List(); _ListCallFunc.Reverse(); SqlInfo result = new SqlInfo(); + result.Parameters = new List(); foreach (var item in _ListCallFunc) { var method = item as MethodCallExpression; + var queryable = this.Context.Queryable(); if (method.Method.Name == "Where") { var exp = method.Arguments[1]; - where.Add("Where " + this.Context.Queryable().QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()); + where.Add(" " +queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()); } else if (method.Method.Name == "OrderBy") { var exp = method.Arguments[1]; - oredrBy.Add( " "+this.Context.Queryable().QueryBuilder.GetExpressionValue(exp,ResolveExpressType.WhereSingle).GetString()); + oredrBy.Add( " "+ queryable.QueryBuilder.GetExpressionValue(exp,ResolveExpressType.WhereSingle).GetString()); } else if (method.Method.Name == "OrderByDescending") { var exp = method.Arguments[1]; - oredrBy.Add(" " + this.Context.Queryable().QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()+" DESC"); + oredrBy.Add(" " + queryable.QueryBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString()+" DESC"); } else if (method.Method.Name == "ToList") { @@ -293,6 +295,8 @@ namespace SqlSugar { Check.ExceptionEasy($"no support {item}", $"不支持表达式{item} 不支持方法{method.Method.Name}"); } + if(queryable.QueryBuilder.Parameters!=null) + result.Parameters.AddRange(queryable.QueryBuilder.Parameters); } if (where.Any()) { @@ -309,6 +313,7 @@ namespace SqlSugar { public string WhereString { get; set; } public string OrderByString { get; set; } + public List Parameters { get; set; } } }