Skip to content

Commit f6e17d5

Browse files
author
zzzprojects
committed
Add DbSetFilter
Add DbSetFilter
1 parent f2ee67a commit f6e17d5

File tree

17 files changed

+373
-113
lines changed

17 files changed

+373
-113
lines changed

src/Z.EntityFramework.Plus.EF6.NET40/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@
1818
[assembly: AssemblyCulture("")]
1919
[assembly: ComVisible(false)]
2020
[assembly: Guid("ac398eb8-0a31-4d06-a804-84d10b6da96d")]
21-
[assembly: AssemblyVersion("1.6.7")]
22-
[assembly: AssemblyFileVersion("1.6.7")]
21+
[assembly: AssemblyVersion("1.7.0")]
22+
[assembly: AssemblyFileVersion("1.7.0")]

src/Z.EntityFramework.Plus.EF6.NET40/Z.EntityFramework.Plus.EF6.NET40.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<Import Project="..\shared\Z.EF.Plus.QueryFuture.Shared\Z.EF.Plus.QueryFuture.Shared.projitems" Label="Shared" />
6767
<Import Project="..\shared\Z.EF.Plus.QueryIncludeFilter.Shared\Z.EF.Plus.QueryIncludeFilter.Shared.projitems" Label="Shared" />
6868
<Import Project="..\shared\Z.EF.Plus.QueryIncludeOptimized.Shared\Z.EF.Plus.QueryIncludeOptimized.Shared.projitems" Label="Shared" />
69+
<Import Project="..\shared\Z.EF.Plus.QueryFilter.Shared\Z.EF.Plus.QueryFilter.Shared.projitems" Label="Shared" />
6970
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
7071
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
7172
Other similar extension points exist, see Microsoft.Common.targets.

src/Z.EntityFramework.Plus.EF6/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@
1818
[assembly: AssemblyCulture("")]
1919
[assembly: ComVisible(false)]
2020
[assembly: Guid("89f47e22-ff83-4ac8-be90-c6755748cf89")]
21-
[assembly: AssemblyVersion("1.6.7")]
22-
[assembly: AssemblyFileVersion("1.6.7")]
21+
[assembly: AssemblyVersion("1.7.0")]
22+
[assembly: AssemblyFileVersion("1.7.0")]

src/Z.EntityFramework.Plus.EF6/Z.EntityFramework.Plus.EF6.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
<Reference Include="System.Core" />
4646
<Reference Include="System.Runtime.Caching" />
4747
<Reference Include="System.Runtime.Extensions" />
48-
<Reference Include="System.Transactions" />
4948
<Reference Include="System.Xml.Linq" />
5049
<Reference Include="System.Data.DataSetExtensions" />
5150
<Reference Include="Microsoft.CSharp" />
@@ -71,6 +70,7 @@
7170
<Import Project="..\shared\Z.EF.Plus.QueryIncludeOptimized.Shared\Z.EF.Plus.QueryIncludeOptimized.Shared.projitems" Label="Shared" />
7271
<Import Project="..\shared\Z.EF.Plus.QueryIncludeFilter.Shared\Z.EF.Plus.QueryIncludeFilter.Shared.projitems" Label="Shared" />
7372
<Import Project="..\shared\Z.EF.Plus.QueryExtensions.Shared\Z.EF.Plus.QueryExtensions.Shared.projitems" Label="Shared" />
73+
<Import Project="..\shared\Z.EF.Plus.QueryFilter.Shared\Z.EF.Plus.QueryFilter.Shared.projitems" Label="Shared" />
7474
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
7575
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
7676
Other similar extension points exist, see Microsoft.Common.targets.

src/shared/Z.EF.Plus.QueryFilter.Shared/BaseQueryFilter.cs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,30 @@
55
// More projects: http://www.zzzprojects.com/
66
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
77

8-
#if !EF6
98
using System;
109

10+
#if EF6
11+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryDbSetFilter;
12+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryDbSetFilterQueryable;
13+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryDbSetFilterContext;
14+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryDbSetFilterManager;
15+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryDbSetFilterSet;
16+
#else
17+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryFilter;
18+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryFilterQueryable;
19+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryFilterContext;
20+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryFilterManager;
21+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryFilterSet;
22+
#endif
23+
1124
namespace Z.EntityFramework.Plus
1225
{
1326
/// <summary>A base class for query filter.</summary>
27+
#if EF6
28+
public abstract class BaseQueryDbSetFilter
29+
#else
1430
public abstract class BaseQueryFilter
31+
#endif
1532
{
1633
/// <summary>Gets or sets the type of the filter element.</summary>
1734
/// <value>The type of the filter element.</value>
@@ -23,7 +40,7 @@ public abstract class BaseQueryFilter
2340

2441
/// <summary>Gets or sets the filter context that owns this filter.</summary>
2542
/// <value>The filter context that owns this filter.</value>
26-
public QueryFilterContext OwnerFilterContext { get; set; }
43+
public AliasQueryFilterContext OwnerFilterContext { get; set; }
2744

2845
/// <summary>Apply the filter on the query and return the new filtered query.</summary>
2946
/// <param name="query">The query to filter.</param>
@@ -52,7 +69,7 @@ public void Disable(params Type[] types)
5269
{
5370
if (OwnerFilterContext == null)
5471
{
55-
QueryFilterManager.GlobalInitializeFilterActions.Add(new Tuple<BaseQueryFilter, Action<BaseQueryFilter>>(this, filter => filter.Disable(types)));
72+
AliasQueryFilterManager.GlobalInitializeFilterActions.Add(new Tuple<AliasBaseQueryFilter, Action<AliasBaseQueryFilter>>(this, filter => filter.Disable(types)));
5673
}
5774
else
5875
{
@@ -79,7 +96,7 @@ public void Enable(params Type[] types)
7996
{
8097
if (OwnerFilterContext == null)
8198
{
82-
QueryFilterManager.GlobalInitializeFilterActions.Add(new Tuple<BaseQueryFilter, Action<BaseQueryFilter>>(this, filter => filter.Enable(types)));
99+
AliasQueryFilterManager.GlobalInitializeFilterActions.Add(new Tuple<AliasBaseQueryFilter, Action<AliasBaseQueryFilter>>(this, filter => filter.Enable(types)));
83100
}
84101
else
85102
{
@@ -97,10 +114,9 @@ public virtual object GetFilter()
97114
/// <summary>Makes a deep copy of this filter.</summary>
98115
/// <param name="filterContext">The filter context that owns the filter copy.</param>
99116
/// <returns>A copy of this filter.</returns>
100-
public virtual BaseQueryFilter Clone(QueryFilterContext filterContext)
117+
public virtual AliasBaseQueryFilter Clone(AliasQueryFilterContext filterContext)
101118
{
102119
throw new Exception(ExceptionMessage.GeneralException);
103120
}
104121
}
105-
}
106-
#endif
122+
}

src/shared/Z.EF.Plus.QueryFilter.Shared/BaseQueryFilterQueryable.cs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
// More projects: http://www.zzzprojects.com/
66
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
77

8-
#if !EF6
98
using System;
109
using System.Collections.Generic;
1110
#if EF5 || EF6
@@ -15,30 +14,48 @@
1514
using Microsoft.EntityFrameworkCore;
1615
#endif
1716

17+
#if EF6
18+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryDbSetFilter;
19+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryDbSetFilterQueryable;
20+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryDbSetFilterContext;
21+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryDbSetFilterManager;
22+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryDbSetFilterSet;
23+
#else
24+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryFilter;
25+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryFilterQueryable;
26+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryFilterContext;
27+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryFilterManager;
28+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryFilterSet;
29+
#endif
30+
1831
namespace Z.EntityFramework.Plus
1932
{
2033
/// <summary>A base class for query filter queryable.</summary>
34+
#if EF6
35+
public abstract class BaseQueryDbSetFilterQueryable
36+
#else
2137
public abstract class BaseQueryFilterQueryable
38+
#endif
2239
{
2340
/// <summary>Gets or sets the context associated to the filter queryable.</summary>
2441
/// <value>The context associated to the filter queryable.</value>
2542
public DbContext Context { get; set; }
2643

2744
/// <summary>Gets or sets the filters used by the filter queryable.</summary>
2845
/// <value>The filters used by the filter queryable.</value>
29-
public List<BaseQueryFilter> Filters { get; set; }
46+
public List<AliasBaseQueryFilter> Filters { get; set; }
3047

3148
/// <summary>Gets or sets the filter set associated with the filter queryable.</summary>
3249
/// <value>The filter set associated with the filter queryable.</value>
33-
public QueryFilterSet FilterSet { get; set; }
50+
public AliasQueryFilterSet FilterSet { get; set; }
3451

3552
/// <summary>Gets or sets the original query.</summary>
3653
/// <value>The original query.</value>
3754
public object OriginalQuery { get; set; }
3855

3956
/// <summary>Disables the filter on the associated query.</summary>
4057
/// <param name="filter">The filter to disable on the associated query.</param>
41-
public void DisableFilter(BaseQueryFilter filter)
58+
public void DisableFilter(AliasBaseQueryFilter filter)
4259
{
4360
if (Filters.Remove(filter))
4461
{
@@ -48,7 +65,7 @@ public void DisableFilter(BaseQueryFilter filter)
4865

4966
/// <summary>Enables the filter on the associated query.</summary>
5067
/// <param name="filter">The filter to enable on the associated query.</param>
51-
public void EnableFilter(BaseQueryFilter filter)
68+
public void EnableFilter(AliasBaseQueryFilter filter)
5269
{
5370
if (!Filters.Contains(filter))
5471
{
@@ -64,5 +81,4 @@ public virtual void UpdateInternalQuery()
6481
throw new Exception(ExceptionMessage.GeneralException);
6582
}
6683
}
67-
}
68-
#endif
84+
}

src/shared/Z.EF.Plus.QueryFilter.Shared/Extensions/DbContext.Filter.cs

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
// More projects: http://www.zzzprojects.com/
66
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
77

8-
#if !EF6
98
using System;
109
using System.Linq;
1110

@@ -17,17 +16,41 @@
1716

1817
#endif
1918

19+
#if EF6
20+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryDbSetFilter;
21+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryDbSetFilterQueryable;
22+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryDbSetFilterContext;
23+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryDbSetFilterManager;
24+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryDbSetFilterSet;
25+
#else
26+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryFilter;
27+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryFilterQueryable;
28+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryFilterContext;
29+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryFilterManager;
30+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryFilterSet;
31+
#endif
32+
2033
namespace Z.EntityFramework.Plus
2134
{
35+
#if EF6
36+
public static partial class QueryDbSetFilterExtensions
37+
#else
2238
public static partial class QueryFilterExtensions
39+
#endif
2340
{
2441
/// <summary>Gets the filter associated with the specified key from the context.</summary>
2542
/// <param name="context">The context filtered.</param>
2643
/// <param name="key">The filter key associated to the filter.</param>
2744
/// <returns>The filter associated with the specified key from the context.</returns>
28-
public static BaseQueryFilter Filter(this DbContext context, object key)
45+
#if EF6
46+
public static AliasBaseQueryFilter DbSetFilter(this DbContext context, object key)
47+
#else
48+
public static AliasBaseQueryFilter Filter(this DbContext context, object key)
49+
#endif
50+
2951
{
30-
var filterContext = QueryFilterManager.AddOrGetFilterContext(context);
52+
var filterContext = AliasQueryFilterManager.AddOrGetFilterContext(context);
53+
3154
return filterContext.GetFilter(key);
3255
}
3356

@@ -39,9 +62,18 @@ public static BaseQueryFilter Filter(this DbContext context, object key)
3962
/// <param name="queryFilter">The query filter to apply to the the context.</param>
4063
/// <param name="isEnabled">true if the filter is enabled.</param>
4164
/// <returns>The filter created and added to the the context.</returns>
42-
public static BaseQueryFilter Filter<T>(this DbContext context, Func<IQueryable<T>, IQueryable<T>> queryFilter, bool isEnabled = true)
65+
#if EF6
66+
public static AliasBaseQueryFilter DbSetFilter<T>(this DbContext context, Func<IQueryable<T>, IQueryable<T>> queryFilter, bool isEnabled = true)
67+
#else
68+
public static AliasBaseQueryFilter Filter<T>(this DbContext context, Func<IQueryable<T>, IQueryable<T>> queryFilter, bool isEnabled = true)
69+
#endif
4370
{
71+
#if EF6
72+
return context.DbSetFilter(Guid.NewGuid(), queryFilter, isEnabled);
73+
74+
#else
4475
return context.Filter(Guid.NewGuid(), queryFilter, isEnabled);
76+
#endif
4577
}
4678

4779
/// <summary>
@@ -53,9 +85,14 @@ public static BaseQueryFilter Filter<T>(this DbContext context, Func<IQueryable<
5385
/// <param name="queryFilter">The query filter to apply to the the context.</param>
5486
/// <param name="isEnabled">true if the filter is enabled.</param>
5587
/// <returns>The filter created and added to the the context.</returns>
56-
public static BaseQueryFilter Filter<T>(this DbContext context, object key, Func<IQueryable<T>, IQueryable<T>> queryFilter, bool isEnabled = true)
88+
#if EF6
89+
public static AliasBaseQueryFilter DbSetFilter<T>(this DbContext context, object key, Func<IQueryable<T>, IQueryable<T>> queryFilter, bool isEnabled = true)
90+
#else
91+
public static AliasBaseQueryFilter Filter<T>(this DbContext context, object key, Func<IQueryable<T>, IQueryable<T>> queryFilter, bool isEnabled = true)
92+
#endif
5793
{
58-
var filterContext = QueryFilterManager.AddOrGetFilterContext(context);
94+
var filterContext = AliasQueryFilterManager.AddOrGetFilterContext(context);
95+
5996
var filter = filterContext.AddFilter(key, queryFilter);
6097

6198
if (isEnabled)
@@ -66,5 +103,4 @@ public static BaseQueryFilter Filter<T>(this DbContext context, object key, Func
66103
return filter;
67104
}
68105
}
69-
}
70-
#endif
106+
}

src/shared/Z.EF.Plus.QueryFilter.Shared/Extensions/DbContext.SetFiltered.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,35 @@
1717

1818
#endif
1919

20+
#if EF6
21+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryDbSetFilter;
22+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryDbSetFilterQueryable;
23+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryDbSetFilterContext;
24+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryDbSetFilterManager;
25+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryDbSetFilterSet;
26+
#else
27+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryFilter;
28+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryFilterQueryable;
29+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryFilterContext;
30+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryFilterManager;
31+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryFilterSet;
32+
#endif
33+
2034
namespace Z.EntityFramework.Plus
2135
{
36+
#if EF6
37+
public static partial class QueryDbSetFilterExtensions
38+
#else
2239
public static partial class QueryFilterExtensions
40+
#endif
2341
{
42+
#if EF6
43+
public static IQueryable<T> WithDbSetFiltered<T>(this DbContext context) where T : class
44+
#else
2445
public static IQueryable<T> SetFiltered<T>(this DbContext context) where T : class
46+
#endif
2547
{
26-
var filterContext = QueryFilterManager.AddOrGetFilterContext(context);
48+
var filterContext = AliasQueryFilterManager.AddOrGetFilterContext(context);
2749

2850
if (filterContext.FilterSetByType.ContainsKey(typeof(T)))
2951
{

src/shared/Z.EF.Plus.QueryFilter.Shared/Extensions/IDbSet.AsNoFilter.cs

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
// More projects: http://www.zzzprojects.com/
66
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
77

8-
#if !EF6
98
using System.Linq;
109
#if EF5 || EF6
1110
using System.Data.Entity;
@@ -15,23 +14,43 @@
1514

1615
#endif
1716

17+
#if EF6
18+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryDbSetFilter;
19+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryDbSetFilterQueryable;
20+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryDbSetFilterContext;
21+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryDbSetFilterManager;
22+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryDbSetFilterSet;
23+
#else
24+
using AliasBaseQueryFilter = Z.EntityFramework.Plus.BaseQueryFilter;
25+
using AliasBaseQueryFilterQueryable = Z.EntityFramework.Plus.BaseQueryFilterQueryable;
26+
using AliasQueryFilterContext = Z.EntityFramework.Plus.QueryFilterContext;
27+
using AliasQueryFilterManager = Z.EntityFramework.Plus.QueryFilterManager;
28+
using AliasQueryFilterSet = Z.EntityFramework.Plus.QueryFilterSet;
29+
#endif
30+
1831
namespace Z.EntityFramework.Plus
1932
{
33+
#if EF6
34+
public static partial class QueryDbSetFilterExtensions
35+
#else
2036
public static partial class QueryFilterExtensions
37+
#endif
2138
{
2239
/// <summary>Return the orginal query before the context was filtered.</summary>
2340
/// <typeparam name="T">The type of elements of the query.</typeparam>
2441
/// <param name="query">The filtered query from which the original query should be retrieved.</param>
2542
/// <returns>The orginal query before the context was filtered.</returns>
26-
#if EF5 || EF6
43+
#if EF5
2744
public static IQueryable<T> AsNoFilter<T>(this IDbSet<T> query) where T : class
45+
#elif EF6
46+
public static IQueryable<T> AsNoDbSetFilter<T>(this IDbSet<T> query) where T : class
2847
#elif EFCORE
2948
public static IQueryable<T> AsNoFilter<T>(this DbSet<T> query) where T : class
3049
#endif
3150
{
32-
var queryFilterQueryable = QueryFilterManager.GetFilterQueryable(query);
51+
var queryFilterQueryable = AliasQueryFilterManager.GetFilterQueryable(query);
52+
3353
return queryFilterQueryable != null ? (IQueryable<T>)queryFilterQueryable.OriginalQuery : query;
3454
}
3555
}
36-
}
37-
#endif
56+
}

0 commit comments

Comments
 (0)