Skip to content

Commit 6cc9ed1

Browse files
authored
Merge pull request #80 from AutoMapper/2Dot1
Refactoring QuerySettings.
2 parents f3a7303 + 3ba7385 commit 6cc9ed1

File tree

21 files changed

+61
-44
lines changed

21 files changed

+61
-44
lines changed

AutoMapper.AspNet.OData.EF6/AutoMapper.AspNet.OData.EF6.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\EdmTypeStructure.cs" Link="EdmTypeStructure.cs" />
2525
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\FilterHelper.cs" Link="FilterHelper.cs" />
2626
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\LinqExtensions.cs" Link="LinqExtensions.cs" />
27+
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\ODataSettings.cs" Link="ODataSettings.cs" />
2728
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\ProjectionSettings.cs" Link="ProjectionSettings.cs" />
2829
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\Properties\Resources.Designer.cs" Link="Properties\Resources.Designer.cs" />
2930
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\QuerySettings.cs" Link="QuerySettings.cs" />
@@ -40,7 +41,7 @@
4041
</ItemGroup>
4142

4243
<ItemGroup>
43-
<PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="[4.0.2,5.0.0)" />
44+
<PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="[4.1.0,5.0.0)" />
4445
<PackageReference Include="EntityFramework" Version="6.2.0" />
4546
<PackageReference Include="LogicBuilder.Expressions.Utils" Version="4.0.2" />
4647
<PackageReference Include="Microsoft.AspNet.OData" Version="7.4.1" />

AutoMapper.AspNetCore.OData.EF6/AutoMapper.AspNetCore.OData.EF6.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\FilterHelper.cs" Link="FilterHelper.cs" />
2525
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\LinqExtensions.cs" Link="LinqExtensions.cs" />
2626
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\ODataQueryOptionsExtensions.cs" Link="ODataQueryOptionsExtensions.cs" />
27+
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\ODataSettings.cs" Link="ODataSettings.cs" />
2728
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\ProjectionSettings.cs" Link="ProjectionSettings.cs" />
2829
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\Properties\Resources.Designer.cs" Link="Properties\Resources.Designer.cs" />
2930
<Compile Include="..\AutoMapper.AspNetCore.OData.EFCore\QuerySettings.cs" Link="QuerySettings.cs" />
@@ -40,7 +41,7 @@
4041
</ItemGroup>
4142

4243
<ItemGroup>
43-
<PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="[4.0.2,5.0.0)" />
44+
<PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="[4.1.0,5.0.0)" />
4445
<PackageReference Include="EntityFramework" Version="6.3.0" />
4546
<PackageReference Include="LogicBuilder.Expressions.Utils" Version="4.0.2" />
4647
<PackageReference Include="Microsoft.AspNetCore.OData" Version="7.4.1" />

AutoMapper.AspNetCore.OData.EF6/QueryableExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static ICollection<TModel> Get<TModel, TData>(this IQueryable<TData> quer
3939
/// <returns></returns>
4040
public static ICollection<TModel> Get<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, QuerySettings querySettings)
4141
where TModel : class
42-
=> query.Get(mapper, options, querySettings == null ? HandleNullPropagationOption.Default : querySettings.HandleNullPropagation);
42+
=> query.Get(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
4343

4444

4545
/// <summary>
@@ -71,7 +71,7 @@ public static async Task<ICollection<TModel>> GetAsync<TModel, TData>(this IQuer
7171

7272
public static async Task<ICollection<TModel>> GetAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, QuerySettings querySettings = null)
7373
where TModel : class
74-
=> await query.GetAsync(mapper, options, querySettings == null ? HandleNullPropagationOption.Default : querySettings.HandleNullPropagation);
74+
=> await query.GetAsync(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
7575

7676
/// <summary>
7777
/// GetQueryAsync
@@ -85,7 +85,7 @@ public static async Task<ICollection<TModel>> GetAsync<TModel, TData>(this IQuer
8585
/// <returns></returns>
8686
public static async Task<IQueryable<TModel>> GetQueryAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption.Default)
8787
where TModel : class
88-
=> await query.GetQueryAsync(mapper, options, new QuerySettings { HandleNullPropagation = handleNullPropagation });
88+
=> await query.GetQueryAsync(mapper, options, new QuerySettings { ODataSettings = new ODataSettings { HandleNullPropagation = handleNullPropagation } });
8989

9090
/// <summary>
9191
/// GetQueryAsync
@@ -107,7 +107,7 @@ public static async Task<IQueryable<TModel>> GetQueryAsync<TModel, TData>(this I
107107
)
108108
.ToList();
109109

110-
Expression<Func<TModel, bool>> filter = options.Filter.ToFilterExpression<TModel>(querySettings == null ? HandleNullPropagationOption.Default : querySettings.HandleNullPropagation);
110+
Expression<Func<TModel, bool>> filter = options.Filter.ToFilterExpression<TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.Default);
111111
Expression<Func<IQueryable<TModel>, IQueryable<TModel>>> queryableExpression = options.GetQueryableExpression();
112112
Expression<Func<IQueryable<TModel>, long>> countExpression = LinqExtensions.GetCountExpression<TModel>(filter);
113113

AutoMapper.AspNetCore.OData.EFCore/AutoMapper.AspNetCore.OData.EFCore.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</PropertyGroup>
1919

2020
<ItemGroup>
21-
<PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="[4.0.2,5.0.0)" />
21+
<PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="[4.1.0,5.0.0)" />
2222
<PackageReference Include="LogicBuilder.Expressions.Utils" Version="4.0.2" />
2323
<PackageReference Include="Microsoft.AspNetCore.OData" Version="7.4.1" />
2424
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Microsoft.AspNet.OData.Query;
2+
3+
namespace AutoMapper.AspNet.OData
4+
{
5+
/// <summary>
6+
/// Settings for configuring OData options on the server
7+
/// </summary>
8+
public class ODataSettings
9+
{
10+
/// <summary>
11+
/// Gets or sets a value indicating how null propagation should
12+
/// be handled during query composition.
13+
/// </summary>
14+
/// <value>
15+
/// The default is <see cref="F:Microsoft.AspNet.OData.Query.HandleNullPropagationOption.Default" />.
16+
/// </value>
17+
public HandleNullPropagationOption HandleNullPropagation { get; set; } = HandleNullPropagationOption.Default;
18+
}
19+
}

AutoMapper.AspNetCore.OData.EFCore/QuerySettings.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,9 @@ namespace AutoMapper.AspNet.OData
88
public class QuerySettings
99
{
1010
/// <summary>
11-
/// Gets or sets a value indicating how null propagation should
12-
/// be handled during query composition.
11+
/// Settings for configuring OData options on the server
1312
/// </summary>
14-
/// <value>
15-
/// The default is <see cref="F:Microsoft.AspNet.OData.Query.HandleNullPropagationOption.Default" />.
16-
/// </value>
17-
public HandleNullPropagationOption HandleNullPropagation { get; set; } = HandleNullPropagationOption.Default;
13+
public ODataSettings ODataSettings { get; set; }
1814

1915
/// <summary>
2016
/// Miscellaneous arguments for IMapper.ProjectTo

AutoMapper.AspNetCore.OData.EFCore/QueryableExtensions.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ namespace AutoMapper.AspNet.OData
1414
{
1515
public static class QueryableExtensions
1616
{
17-
public static ICollection<TModel> Get<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption.Default)
17+
public static ICollection<TModel> Get<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption.False)
1818
where TModel : class
1919
=> Task.Run(async () => await query.GetAsync(mapper, options, handleNullPropagation)).Result;
2020

2121
public static ICollection<TModel> Get<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, QuerySettings querySettings = null)
2222
where TModel : class
23-
=> query.Get(mapper, options, querySettings == null ? HandleNullPropagationOption.Default : querySettings.HandleNullPropagation);
23+
=> query.Get(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.False);
2424

25-
public static async Task<ICollection<TModel>> GetAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption.Default)
25+
public static async Task<ICollection<TModel>> GetAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption.False)
2626
where TModel : class
2727
{
2828
ICollection<Expression<Func<IQueryable<TModel>, IIncludableQueryable<TModel, object>>>> includeExpressions = options.SelectExpand.GetIncludes().BuildIncludesExpressionCollection<TModel>()?.ToList();
@@ -39,11 +39,11 @@ public static async Task<ICollection<TModel>> GetAsync<TModel, TData>(this IQuer
3939

4040
public static async Task<ICollection<TModel>> GetAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, QuerySettings querySettings = null)
4141
where TModel : class
42-
=> await query.GetAsync(mapper, options, querySettings == null ? HandleNullPropagationOption.Default : querySettings.HandleNullPropagation);
42+
=> await query.GetAsync(mapper, options, querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.False);
4343

44-
public static async Task<IQueryable<TModel>> GetQueryAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption.Default)
44+
public static async Task<IQueryable<TModel>> GetQueryAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, HandleNullPropagationOption handleNullPropagation = HandleNullPropagationOption.False)
4545
where TModel : class
46-
=> await query.GetQueryAsync(mapper, options, new QuerySettings { HandleNullPropagation = handleNullPropagation });
46+
=> await query.GetQueryAsync(mapper, options, new QuerySettings { ODataSettings = new ODataSettings { HandleNullPropagation = handleNullPropagation } });
4747

4848
public static async Task<IQueryable<TModel>> GetQueryAsync<TModel, TData>(this IQueryable<TData> query, IMapper mapper, ODataQueryOptions<TModel> options, QuerySettings querySettings = null)
4949
where TModel : class
@@ -55,7 +55,7 @@ public static async Task<IQueryable<TModel>> GetQueryAsync<TModel, TData>(this I
5555
)
5656
.ToList();
5757

58-
Expression<Func<TModel, bool>> filter = options.Filter.ToFilterExpression<TModel>(querySettings == null ? HandleNullPropagationOption.False : querySettings.HandleNullPropagation);
58+
Expression<Func<TModel, bool>> filter = options.Filter.ToFilterExpression<TModel>(querySettings?.ODataSettings?.HandleNullPropagation ?? HandleNullPropagationOption.False);
5959
Expression<Func<IQueryable<TModel>, IQueryable<TModel>>> queryableExpression = options.GetQueryableExpression();
6060
Expression<Func<IQueryable<TModel>, long>> countExpression = LinqExtensions.GetCountExpression<TModel>(filter);
6161

AutoMapper.Extensions.OData.sln

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MigrationTool", "MigrationT
4545
EndProject
4646
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SeedDatabase", "SeedDatabase\SeedDatabase.csproj", "{CE492720-2000-4533-93AF-5AA71A65D305}"
4747
EndProject
48-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoMapper.OData.EF6.Tests", "AutoMapper.OData.EF6.Tests\AutoMapper.OData.EF6.Tests.csproj", "{BF11CF7F-0424-46F7-A60E-B614525C68C7}"
48+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoMapper.OData.EF6.Tests", "AutoMapper.OData.EF6.Tests\AutoMapper.OData.EF6.Tests.csproj", "{BF11CF7F-0424-46F7-A60E-B614525C68C7}"
4949
EndProject
50-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebAPI.OData.EF6", "WebAPI.OData.EF6\WebAPI.OData.EF6.csproj", "{4C069416-CF7B-45C7-8C8F-B3D24DC16D01}"
50+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebAPI.OData.EF6", "WebAPI.OData.EF6\WebAPI.OData.EF6.csproj", "{4C069416-CF7B-45C7-8C8F-B3D24DC16D01}"
5151
EndProject
52-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DAL.EF6", "DAL.EF6\DAL.EF6.csproj", "{8139DB48-8A96-405A-9B02-44C4AEF79FD0}"
52+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DAL.EF6", "DAL.EF6\DAL.EF6.csproj", "{8139DB48-8A96-405A-9B02-44C4AEF79FD0}"
5353
EndProject
5454
Global
5555
GlobalSection(SolutionConfigurationPlatforms) = preSolution

AutoMapper.OData.EF6.Tests/GetQuerySelectTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ async Task<IQueryable<TModel>> DoGet(IMapper mapper, TestDbContext context)
137137
serviceProvider,
138138
serviceProvider.GetRequiredService<IRouteBuilder>()
139139
),
140-
new QuerySettings { HandleNullPropagation = HandleNullPropagationOption.False }
140+
new QuerySettings { ODataSettings = new ODataSettings { HandleNullPropagation = HandleNullPropagationOption.False } }
141141
);
142142
}
143143
}

AutoMapper.OData.EF6.Tests/GetQueryTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ await Get<CoreBuilding, TBuilding>
175175
new QuerySettings
176176
{
177177
ProjectionSettings = new ProjectionSettings { Parameters = parameters },
178-
HandleNullPropagation = HandleNullPropagationOption.False
178+
ODataSettings = new ODataSettings { HandleNullPropagation = HandleNullPropagationOption.False }
179179
}
180180
)
181181
);

0 commit comments

Comments
 (0)