mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-30 20:57:58 +08:00
Update gobal filter
This commit is contained in:
parent
567feafcd1
commit
66a8d5f6dc
@ -1556,6 +1556,7 @@ namespace SqlSugar
|
|||||||
asyncQueryableBuilder.SubToListParameters= this.Context.Utilities.TranslateCopy(this.QueryBuilder.SubToListParameters);
|
asyncQueryableBuilder.SubToListParameters= this.Context.Utilities.TranslateCopy(this.QueryBuilder.SubToListParameters);
|
||||||
asyncQueryableBuilder.AppendColumns = this.Context.Utilities.TranslateCopy(this.QueryBuilder.AppendColumns);
|
asyncQueryableBuilder.AppendColumns = this.Context.Utilities.TranslateCopy(this.QueryBuilder.AppendColumns);
|
||||||
asyncQueryableBuilder.AppendValues = this.Context.Utilities.TranslateCopy(this.QueryBuilder.AppendValues);
|
asyncQueryableBuilder.AppendValues = this.Context.Utilities.TranslateCopy(this.QueryBuilder.AppendValues);
|
||||||
|
asyncQueryableBuilder.RemoveFilters = this.QueryBuilder.RemoveFilters?.ToArray();
|
||||||
}
|
}
|
||||||
protected int SetCacheTime(int cacheDurationInSeconds)
|
protected int SetCacheTime(int cacheDurationInSeconds)
|
||||||
{
|
{
|
||||||
|
@ -266,6 +266,12 @@ namespace SqlSugar
|
|||||||
this.Filter(null, true);
|
this.Filter(null, true);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public ISugarQueryable<T> ClearFilter(params Type[] types)
|
||||||
|
{
|
||||||
|
this.QueryBuilder.RemoveFilters = types;
|
||||||
|
this.Filter(null, true);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public ISugarQueryable<T> Filter(Type type)
|
public ISugarQueryable<T> Filter(Type type)
|
||||||
{
|
{
|
||||||
this.Context.InitMappingInfo(type);
|
this.Context.InitMappingInfo(type);
|
||||||
|
@ -34,6 +34,7 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Splicing basic
|
#region Splicing basic
|
||||||
|
public Type[] RemoveFilters { get; set; }
|
||||||
public Dictionary<string, object> SubToListParameters { get; set; }
|
public Dictionary<string, object> SubToListParameters { get; set; }
|
||||||
internal List<QueryableAppendColumn> AppendColumns { get; set; }
|
internal List<QueryableAppendColumn> AppendColumns { get; set; }
|
||||||
internal List<List<QueryableAppendColumn>> AppendValues { get; set; }
|
internal List<List<QueryableAppendColumn>> AppendValues { get; set; }
|
||||||
@ -297,7 +298,7 @@ namespace SqlSugar
|
|||||||
if (this.Context != null)
|
if (this.Context != null)
|
||||||
{
|
{
|
||||||
var db = Context;
|
var db = Context;
|
||||||
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
|
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic| BindingFlags.Public;
|
||||||
var index = 0;
|
var index = 0;
|
||||||
if (db.QueryFilter.GeFilterList != null)
|
if (db.QueryFilter.GeFilterList != null)
|
||||||
{
|
{
|
||||||
@ -306,7 +307,7 @@ namespace SqlSugar
|
|||||||
PropertyInfo field = item.GetType().GetProperty("exp", flag);
|
PropertyInfo field = item.GetType().GetProperty("exp", flag);
|
||||||
if (field != null)
|
if (field != null)
|
||||||
{
|
{
|
||||||
Type ChildType = item.GetType().GetProperty("type", flag).GetValue(item, null) as Type;
|
Type ChildType = item.type;
|
||||||
var isInterface = ChildType.IsInterface && type.GetInterfaces().Any(it => it == ChildType);
|
var isInterface = ChildType.IsInterface && type.GetInterfaces().Any(it => it == ChildType);
|
||||||
if (ChildType == type|| isInterface)
|
if (ChildType == type|| isInterface)
|
||||||
{
|
{
|
||||||
@ -366,7 +367,10 @@ namespace SqlSugar
|
|||||||
if (!IsDisabledGobalFilter && this.Context.QueryFilter.GeFilterList.HasValue())
|
if (!IsDisabledGobalFilter && this.Context.QueryFilter.GeFilterList.HasValue())
|
||||||
{
|
{
|
||||||
var gobalFilterList = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName.IsNullOrEmpty()).ToList();
|
var gobalFilterList = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName.IsNullOrEmpty()).ToList();
|
||||||
|
if (this.RemoveFilters != null && this.RemoveFilters.Length > 0)
|
||||||
|
{
|
||||||
|
gobalFilterList = gobalFilterList.Where(it => !this.RemoveFilters.Contains(it.type)).ToList();
|
||||||
|
}
|
||||||
foreach (var item in gobalFilterList)
|
foreach (var item in gobalFilterList)
|
||||||
{
|
{
|
||||||
if (item.GetType().Name.StartsWith("TableFilterItem"))
|
if (item.GetType().Name.StartsWith("TableFilterItem"))
|
||||||
@ -389,10 +393,10 @@ namespace SqlSugar
|
|||||||
|
|
||||||
private void AppendTableFilter(SqlFilterItem item)
|
private void AppendTableFilter(SqlFilterItem item)
|
||||||
{
|
{
|
||||||
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
|
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic |BindingFlags.Public;
|
||||||
Type type = item.GetType();
|
Type type = item.GetType();
|
||||||
PropertyInfo field = type.GetProperty("exp", flag);
|
PropertyInfo field = type.GetProperty("exp", flag);
|
||||||
Type ChildType = type.GetProperty("type", flag).GetValue(item, null) as Type;
|
Type ChildType = item.type;
|
||||||
var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(ChildType);
|
var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(ChildType);
|
||||||
var exp = field.GetValue(item, null) as Expression;
|
var exp = field.GetValue(item, null) as Expression;
|
||||||
var isMain = ChildType == this.EntityType||(ChildType.IsInterface&& this.EntityType.GetInterfaces().Any(it => it == ChildType));
|
var isMain = ChildType == this.EntityType||(ChildType.IsInterface&& this.EntityType.GetInterfaces().Any(it => it == ChildType));
|
||||||
|
@ -17,6 +17,7 @@ namespace SqlSugar
|
|||||||
/// Is it a multiple table query?
|
/// Is it a multiple table query?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsJoinQuery { get; set; }
|
public bool IsJoinQuery { get; set; }
|
||||||
|
internal Type type { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TableFilterItem<T>: SqlFilterItem
|
public class TableFilterItem<T>: SqlFilterItem
|
||||||
@ -26,7 +27,6 @@ namespace SqlSugar
|
|||||||
|
|
||||||
}
|
}
|
||||||
private Expression exp { get; set; }
|
private Expression exp { get; set; }
|
||||||
private Type type { get; set; }
|
|
||||||
public TableFilterItem(Expression<Func<T,bool>> expression,bool isJoinOn=false)
|
public TableFilterItem(Expression<Func<T,bool>> expression,bool isJoinOn=false)
|
||||||
{
|
{
|
||||||
exp = expression;
|
exp = expression;
|
||||||
|
@ -33,6 +33,7 @@ namespace SqlSugar
|
|||||||
ISugarQueryable<T, T2> InnerJoin<T2>(Expression<Func<T, T2, bool>> joinExpression);
|
ISugarQueryable<T, T2> InnerJoin<T2>(Expression<Func<T, T2, bool>> joinExpression);
|
||||||
ISugarQueryable<T, T2> RightJoin<T2>(Expression<Func<T, T2, bool>> joinExpression);
|
ISugarQueryable<T, T2> RightJoin<T2>(Expression<Func<T, T2, bool>> joinExpression);
|
||||||
ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter = false);
|
ISugarQueryable<T> Filter(string FilterName, bool isDisabledGobalFilter = false);
|
||||||
|
ISugarQueryable<T> ClearFilter(params Type[] types);
|
||||||
ISugarQueryable<T> ClearFilter();
|
ISugarQueryable<T> ClearFilter();
|
||||||
ISugarQueryable<T> Filter(Type type);
|
ISugarQueryable<T> Filter(Type type);
|
||||||
ISugarQueryable<T> Mapper(Action<T> mapperAction);
|
ISugarQueryable<T> Mapper(Action<T> mapperAction);
|
||||||
|
Loading…
Reference in New Issue
Block a user