diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index d0a482f6d..796c95d4a 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -50,6 +50,20 @@ namespace SqlSugar { QueryBuilder.Clear(); } + public ISugarQueryable IgnoreColumns(Expression> columns) + { + var ignoreColumns = QueryBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it).ToLower()).ToList(); + return IgnoreColumns(ignoreColumns.ToArray()); + } + public ISugarQueryable IgnoreColumns(params string[] columns) + { + if (QueryBuilder.IgnoreColumns.IsNullOrEmpty()) + { + QueryBuilder.IgnoreColumns = new List(); + } + QueryBuilder.IgnoreColumns.AddRange(columns); + return this; + } public void AddQueue() { var sqlObj = this.ToSql(); @@ -1885,6 +1899,7 @@ namespace SqlSugar asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex; asyncQueryableBuilder.HavingInfos = this.QueryBuilder.HavingInfos; asyncQueryableBuilder.LambdaExpressions.ParameterIndex = this.QueryBuilder.LambdaExpressions.ParameterIndex; + asyncQueryableBuilder.IgnoreColumns = this.QueryBuilder.IgnoreColumns; } protected int SetCacheTime(int cacheDurationInSeconds) { diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index b3c06161b..daae08520 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -33,6 +33,7 @@ namespace SqlSugar #endregion #region Splicing basic + public List IgnoreColumns { get; set; } public bool IsCount { get; set; } public int? Skip { get; set; } public int ExternalPageIndex { get; set; } @@ -429,7 +430,12 @@ namespace SqlSugar { pre = Builder.GetTranslationColumnName(TableShortName) + "."; } - result = string.Join(",", this.Context.EntityMaintenance.GetEntityInfo(this.EntityType).Columns.Where(it => !it.IsIgnore).Select(it => pre + Builder.GetTranslationColumnName(it.EntityName, it.PropertyName))); + var columns = this.Context.EntityMaintenance.GetEntityInfo(this.EntityType).Columns.Where(it => !it.IsIgnore); + if (this.IgnoreColumns.HasValue()) + { + columns = columns.Where(c => !this.IgnoreColumns.Any(i=>c.PropertyName.Equals(i,StringComparison.CurrentCultureIgnoreCase)||c.DbColumnName.Equals(i,StringComparison.CurrentCultureIgnoreCase))).ToList(); + } + result = string.Join(",", columns.Select(it => pre + Builder.GetTranslationColumnName(it.EntityName, it.PropertyName))); } else { diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index 93e8b2855..83573d021 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -152,6 +152,8 @@ namespace SqlSugar string ToClassString(string className); void Clear(); void AddQueue(); + ISugarQueryable IgnoreColumns(Expression> columns); + ISugarQueryable IgnoreColumns(params string[] columns); } public partial interface ISugarQueryable : ISugarQueryable {