From fb1fa5d769029accda2c2fd91ab13b926d826be3 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 11 Sep 2017 12:26:03 +0800 Subject: [PATCH] - --- .../QueryableProvider/QueryableProvider.cs | 117 +++++++++++++----- Src/Asp.Net/SqlSugar/Interface/IQueryable.cs | 15 ++- 2 files changed, 100 insertions(+), 32 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 500c6b5ce..d153d6785 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -29,7 +29,8 @@ namespace SqlSugar { return this.SqlBuilder.QueryBuilder; } - set { + set + { this.SqlBuilder.QueryBuilder = value; } } @@ -48,22 +49,12 @@ namespace SqlSugar public virtual ISugarQueryable AS(string tableName) { var entityName = typeof(T2).Name; - IsAs = true; - OldMappingTableList = this.Context.MappingTables; - this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables); - this.Context.MappingTables.Add(entityName, tableName); - this.QueryableMappingTableList = this.Context.MappingTables; - return this; + return _As(tableName, entityName); } public ISugarQueryable AS(string tableName) { var entityName = typeof(T).Name; - IsAs = true; - OldMappingTableList = this.Context.MappingTables; - this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables); - this.Context.MappingTables.Add(entityName, tableName); - this.QueryableMappingTableList = this.Context.MappingTables; - return this; + return _As(tableName, entityName); } public virtual ISugarQueryable With(string withString) { @@ -73,16 +64,7 @@ namespace SqlSugar public virtual ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { - QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter; - if (this.Context.QueryFilter.GeFilterList.IsValuable() && FilterName.IsValuable()) - { - var list = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName == FilterName && it.IsJoinQuery == !QueryBuilder.IsSingle()); - foreach (var item in list) - { - var filterResult = item.FilterValue(this.Context); - Where(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), filterResult.Sql), filterResult.Parameters); - } - } + _Filter(FilterName, isDisabledGobalFilter); return this; } @@ -98,6 +80,12 @@ namespace SqlSugar QueryBuilder.Parameters.AddRange(parameters); return this; } + public virtual ISugarQueryable AddParameters(List parameters) + { + if (parameters != null) + QueryBuilder.Parameters.AddRange(parameters); + return this; + } public virtual ISugarQueryable AddParameters(SugarParameter parameter) { if (parameter != null) @@ -363,7 +351,7 @@ namespace SqlSugar public virtual T Single(Expression> expression) { _Where(expression); - var result=Single(); + var result = Single(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } @@ -389,7 +377,7 @@ namespace SqlSugar public virtual T First(Expression> expression) { _Where(expression); - var result= First(); + var result = First(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } @@ -785,19 +773,19 @@ namespace SqlSugar Task result = new Task(() => { ISugarQueryable asyncQueryable = CopyQueryable(); - return asyncQueryable.ToJsonPage(pageIndex,pageSize); + return asyncQueryable.ToJsonPage(pageIndex, pageSize); }); result.Start(); return result; } - public Task> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber) + public Task> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber) { Task> result = new Task>(() => { int totalNumberAsync = 0; ISugarQueryable asyncQueryable = CopyQueryable(); - var list= asyncQueryable.ToJsonPage(pageIndex, pageSize,ref totalNumberAsync); + var list = asyncQueryable.ToJsonPage(pageIndex, pageSize, ref totalNumberAsync); return new KeyValuePair(list, totalNumberAsync); }); result.Start(); @@ -826,7 +814,7 @@ namespace SqlSugar return result; } - public Task> ToDataTablePageAsync(int pageIndex, int pageSize,int totalNumber) + public Task> ToDataTablePageAsync(int pageIndex, int pageSize, int totalNumber) { Task> result = new Task>(() => { @@ -931,6 +919,28 @@ namespace SqlSugar var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); return Sum(lamResult.GetResultString()); } + protected ISugarQueryable _As(string tableName, string entityName) + { + IsAs = true; + OldMappingTableList = this.Context.MappingTables; + this.Context.MappingTables = this.Context.Utilities.TranslateCopy(this.Context.MappingTables); + this.Context.MappingTables.Add(entityName, tableName); + this.QueryableMappingTableList = this.Context.MappingTables; + return this; + } + protected void _Filter(string FilterName, bool isDisabledGobalFilter) + { + QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter; + if (this.Context.QueryFilter.GeFilterList.IsValuable() && FilterName.IsValuable()) + { + var list = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName == FilterName && it.IsJoinQuery == !QueryBuilder.IsSingle()); + foreach (var item in list) + { + var filterResult = item.FilterValue(this.Context); + Where(SqlBuilder.AppendWhereOrAnd(QueryBuilder.WhereInfos.IsNullOrEmpty(), filterResult.Sql), filterResult.Parameters); + } + } + } public ISugarQueryable _PartitionBy(Expression expression) { LambdaExpression lambda = expression as LambdaExpression; @@ -1052,7 +1062,7 @@ namespace SqlSugar } private ISugarQueryable CopyQueryable() { - var asyncContext = this.Context.Utilities.CopyContext(this.Context,true); + var asyncContext = this.Context.Utilities.CopyContext(this.Context, true); asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; var asyncQueryable = asyncContext.Queryable().Select(string.Empty); @@ -1193,6 +1203,53 @@ namespace SqlSugar return this; } #endregion + + #region Other + public new ISugarQueryable AS(string tableName) + { + var entityName = typeof(AsT).Name; + _As(tableName, entityName); + return this; + } + public new ISugarQueryable AS(string tableName) + { + var entityName = typeof(T).Name; + _As(tableName, entityName); + return this; + } + public new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false) { + _Filter(FilterName, isDisabledGobalFilter); + return this; + } + public new ISugarQueryable AddParameters(object parameters) { + if (parameters != null) + QueryBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); + return this; + } + public new ISugarQueryable AddParameters(SugarParameter[] parameters) { + if (parameters != null) + QueryBuilder.Parameters.AddRange(parameters); + return this; + } + public new ISugarQueryable AddParameters(List parameters) { + if (parameters != null) + QueryBuilder.Parameters.AddRange(parameters); + return this; + } + public new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left) { + QueryBuilder.JoinIndex = +1; + QueryBuilder.JoinQueryInfos + .Add(new JoinQueryInfo() + { + JoinIndex = QueryBuilder.JoinIndex, + TableName = tableName, + ShortName = shortName, + JoinType = type, + JoinWhere = joinWhere + }); + return this; + } + #endregion } #endregion #region T3 diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index 4486051af..6d0cf1394 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -19,8 +19,9 @@ namespace SqlSugar ISugarQueryable AS(string tableName); ISugarQueryable With(string withString); ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter= false); - ISugarQueryable AddParameters(object pars); - ISugarQueryable AddParameters(SugarParameter[] pars); + ISugarQueryable AddParameters(object parameters); + ISugarQueryable AddParameters(SugarParameter[] parameters); + ISugarQueryable AddParameters(List parameters); ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left); ISugarQueryable Where(Expression> expression); @@ -158,6 +159,16 @@ namespace SqlSugar new ISugarQueryable In(Expression> expression, List inValues); new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); #endregion + + #region Other + new ISugarQueryable AS(string tableName); + new ISugarQueryable AS(string tableName); + new ISugarQueryable Filter(string FilterName, bool isDisabledGobalFilter = false); + new ISugarQueryable AddParameters(object parameters); + new ISugarQueryable AddParameters(SugarParameter[] parameters); + new ISugarQueryable AddParameters(List parameters); + new ISugarQueryable AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left); + #endregion } public partial interface ISugarQueryable : ISugarQueryable {