From 0227ce8a564906cf8a107655388195c06d55a57b Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 4 Mar 2017 01:19:25 +0800 Subject: [PATCH] - --- OrmTest/ExpressionTest/Join.cs | 2 +- .../QueryableProvider/QueryableAccessory.cs | 25 ++++++++++++------- .../QueryableProvider/QueryableProvider.cs | 7 +++++- .../DMLBuilder/LambadaQueryBuilder.cs | 2 +- .../Databases/SqlServer/Db/SqlServerDb.cs | 8 +++--- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/OrmTest/ExpressionTest/Join.cs b/OrmTest/ExpressionTest/Join.cs index 053178a84..683942706 100644 --- a/OrmTest/ExpressionTest/Join.cs +++ b/OrmTest/ExpressionTest/Join.cs @@ -31,7 +31,7 @@ namespace OrmTest.ExpressionTest { var list = db.Queryable((st, sc) => new object[] { JoinType.Left,st.SchoolId==sc.Id - }).ToList(); + }).Where(st=>st.Id>0).ToList(); } } diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs b/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs index 903425ddc..45131f561 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs @@ -10,27 +10,34 @@ namespace SqlSugar public class QueryableAccessory { protected List _Pars; + protected List Pars + { + get + { + if (_Pars == null) + _Pars = new List(); + return _Pars; + } + + } protected void AddPars(object whereObj, SqlSugarClient context) { var sqlParsArray = context.Database.GetParameters(whereObj); - if (_Pars == null) - _Pars = new List(); if (sqlParsArray != null) - _Pars.AddRange(sqlParsArray); + this.Pars.AddRange(sqlParsArray); } protected void AddPars(List pars, SqlSugarClient context) { if (_Pars == null) _Pars = new List(); - if (pars != null) - _Pars.AddRange(pars); + _Pars.AddRange(pars); } protected void Where(Expression> expression, ResolveExpressType type, SqlSugarClient context) where T : class, new() { - ILambdaExpressions resolveExpress =InstanceFactory.GetLambdaExpressions(context.CurrentConnectionConfig); - resolveExpress.Resolve(expression,type); - _Pars.AddRange(resolveExpress.Parameters); - context.SqlBuilder.LambadaQueryBuilder.WhereInfos.Add(resolveExpress.Result.ToString()); + ILambdaExpressions resolveExpress = InstanceFactory.GetLambdaExpressions(context.CurrentConnectionConfig); + resolveExpress.Resolve(expression, type); + Pars.AddRange(resolveExpress.Parameters); + context.SqlBuilder.LambadaQueryBuilder.WhereInfos.Add(resolveExpress.Result.GetResultString()); } protected void Where(string whereString, object whereObj, SqlSugarClient context) where T : class, new() diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index ffb4a42bd..2fe975277 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -28,7 +28,12 @@ namespace SqlSugar public virtual ISugarQueryable Where(Expression> expression) { - base.Where(expression, ResolveExpressType.WhereSingle, this.Context); + var type = ResolveExpressType.WhereSingle; + if (Context.SqlBuilder.LambadaQueryBuilder.JoinQueryInfos.IsValuable()) + { + type = ResolveExpressType.WhereMultiple; + } + base.Where(expression,type, this.Context); return this; } diff --git a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs index 8fa66021b..4961218b3 100644 --- a/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs +++ b/SqlSugar/Abstract/SqlBuilderProvider/DMLBuilder/LambadaQueryBuilder.cs @@ -74,7 +74,7 @@ namespace SqlSugar if (this.WhereInfos == null) return null; else { - return string.Join(" ", this.WhereInfos); + return " WHERE "+string.Join(" ", this.WhereInfos); } } } diff --git a/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs b/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs index 16685f50f..fdcd27352 100644 --- a/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs +++ b/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs @@ -76,7 +76,8 @@ namespace SqlSugar public override IDataParameter[] ToIDbDataParameter(params SugarParameter[] pars) { if (pars == null || pars.Length == 0) return null; - IDataParameter[] reval = new IDataParameter[pars.Length]; + SqlParameter[] reval = new SqlParameter[pars.Length]; + int i = 0; foreach (var par in pars) { var p = new SqlParameter(); @@ -85,9 +86,10 @@ namespace SqlSugar p.Size = par.Size; p.Value = par.Value; p.DbType = par.DbType; - reval[0] =p; + reval[i] =p; + ++i; } - return pars; + return reval; } } }