Skip to content

Commit 2763055

Browse files
committed
Aggregate methods will manage null critierias
1 parent 160a4a4 commit 2763055

7 files changed

Lines changed: 54 additions & 82 deletions

File tree

SharpRepository.EfCoreRepository/SharpRepository.EfCoreRepository.DotNetCore.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@
55
</PropertyGroup>
66
<PropertyGroup>
77
<TargetFramework>netstandard1.6</TargetFramework>
8+
<PackageId>SharpRepository.EfCoreRepository</PackageId>
9+
<PackageVersion>2.0.0-alpha1</PackageVersion>
10+
<Authors>Ben Griswold, Jeff Treuting, Fairway Technologies, Omar Piani, Eivind Gussiås Løkseth</Authors>
11+
<Description>Entity Framework Core implementation of SharpRepository repository</Description>
12+
<Summary>Written in C#, includes support for various relational, document and object databases including Entity Framework, RavenDB, MongoDB, CouchDB and Db4o. SharpRepository includes Xml and InMemory repository implementations as well. SharpRepository offers built-in caching options for AppFabric, memcached and the standard System.Runtime.Caching. SharpRepository also supports Specifications, FetchStrategies, Batches and Traits!</Summary>
13+
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
14+
<PackageReleaseNotes>Ef Core repository</PackageReleaseNotes>
15+
<Copyright>Copyright 2017 (c) Contoso Corporation. All rights reserved.</Copyright>
16+
<PackageTags>SharpRepository Repository</PackageTags>
817
</PropertyGroup>
918
<ItemGroup>
1019
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.0" />

SharpRepository.Repository/Caching/InMemoryCachingProvider.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ public void Clear(string key)
4343
public bool Exists(string key)
4444
{
4545
if (String.IsNullOrEmpty(key)) throw new ArgumentNullException("key");
46-
object value;
47-
return Cache.TryGetValue(key, out value);
46+
return Cache.TryGetValue(key, out object value);
4847
}
4948

5049
public bool Get<T>(string key, out T value)
@@ -75,8 +74,7 @@ public int Increment(string key, int defaultValue, int incrementValue, CacheItem
7574

7675
lock (LockObject)
7776
{
78-
int current;
79-
if (!Get(key, out current))
77+
if (!Get(key, out int current))
8078
{
8179
current = defaultValue;
8280
}

SharpRepository.Repository/Properties/AssemblyInfo.cs

Lines changed: 0 additions & 45 deletions
This file was deleted.

SharpRepository.Repository/RepositoryBase.cs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ public IEnumerable<TResult> GroupBy<TGroupKey, TResult>(Expression<Func<T, TGrou
790790

791791
public virtual IEnumerable<TResult> GroupBy<TGroupKey, TResult>(ISpecification<T> criteria, Expression<Func<T, TGroupKey>> keySelector, Expression<Func<IGrouping<TGroupKey, T>, TResult>> resultSelector)
792792
{
793-
var predicate = criteria.Predicate.Compile();
793+
var predicate = criteria?.Predicate?.Compile();
794794
var keySelectFunc = keySelector.Compile();
795795
var resultSelectFunc = resultSelector.Compile();
796796
return QueryManager.ExecuteGroup(
@@ -821,7 +821,7 @@ public long LongCount()
821821

822822
public virtual long LongCount(ISpecification<T> criteria)
823823
{
824-
var predicate = criteria.Predicate.Compile();
824+
var predicate = criteria?.Predicate?.Compile();
825825
return QueryManager.ExecuteLongCount(
826826
() => criteria == null ? BaseQuery().LongCount() : BaseQuery().LongCount(predicate),
827827
criteria
@@ -840,7 +840,7 @@ public int Count()
840840

841841
public virtual int Count(ISpecification<T> criteria)
842842
{
843-
var predicate = criteria.Predicate.Compile();
843+
var predicate = criteria?.Predicate?.Compile();
844844
return QueryManager.ExecuteCount(
845845
() => criteria == null ? BaseQuery().Count() : BaseQuery().Count(predicate),
846846
criteria
@@ -860,7 +860,7 @@ public int Sum(Expression<Func<T, int>> selector)
860860
public virtual int Sum(ISpecification<T> criteria, Expression<Func<T, int>> selector)
861861
{
862862
var selectFunc = selector.Compile();
863-
var predicate = criteria.Predicate.Compile();
863+
var predicate = criteria?.Predicate?.Compile();
864864
return QueryManager.ExecuteSum(
865865
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
866866
selector,
@@ -881,7 +881,7 @@ public int Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, int>> sel
881881
public virtual int? Sum(ISpecification<T> criteria, Expression<Func<T, int?>> selector)
882882
{
883883
var selectFunc = selector.Compile();
884-
var predicate = criteria.Predicate.Compile();
884+
var predicate = criteria?.Predicate?.Compile();
885885
return QueryManager.ExecuteSum(
886886
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
887887
selector,
@@ -902,7 +902,7 @@ public long Sum(Expression<Func<T, long>> selector)
902902
public virtual long Sum(ISpecification<T> criteria, Expression<Func<T, long>> selector)
903903
{
904904
var selectFunc = selector.Compile();
905-
var predicate = criteria.Predicate.Compile();
905+
var predicate = criteria?.Predicate?.Compile();
906906
return QueryManager.ExecuteSum(
907907
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
908908
selector,
@@ -923,7 +923,7 @@ public long Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, long>> s
923923
public virtual long? Sum(ISpecification<T> criteria, Expression<Func<T, long?>> selector)
924924
{
925925
var selectFunc = selector.Compile();
926-
var predicate = criteria.Predicate.Compile();
926+
var predicate = criteria?.Predicate?.Compile();
927927
return QueryManager.ExecuteSum(
928928
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
929929
selector,
@@ -944,7 +944,7 @@ public decimal Sum(Expression<Func<T, decimal>> selector)
944944
public virtual decimal Sum(ISpecification<T> criteria, Expression<Func<T, decimal>> selector)
945945
{
946946
var selectFunc = selector.Compile();
947-
var predicate = criteria.Predicate.Compile();
947+
var predicate = criteria?.Predicate?.Compile();
948948
return QueryManager.ExecuteSum(
949949
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
950950
selector,
@@ -965,7 +965,7 @@ public decimal Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, decim
965965
public virtual decimal? Sum(ISpecification<T> criteria, Expression<Func<T, decimal?>> selector)
966966
{
967967
var selectFunc = selector.Compile();
968-
var predicate = criteria.Predicate.Compile();
968+
var predicate = criteria?.Predicate?.Compile();
969969
return QueryManager.ExecuteSum(
970970
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
971971
selector,
@@ -986,7 +986,7 @@ public double Sum(Expression<Func<T, double>> selector)
986986
public virtual double Sum(ISpecification<T> criteria, Expression<Func<T, double>> selector)
987987
{
988988
var selectFunc = selector.Compile();
989-
var predicate = criteria.Predicate.Compile();
989+
var predicate = criteria?.Predicate?.Compile();
990990
return QueryManager.ExecuteSum(
991991
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
992992
selector,
@@ -1007,7 +1007,7 @@ public double Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, double
10071007
public virtual double? Sum(ISpecification<T> criteria, Expression<Func<T, double?>> selector)
10081008
{
10091009
var selectFunc = selector.Compile();
1010-
var predicate = criteria.Predicate.Compile();
1010+
var predicate = criteria?.Predicate?.Compile();
10111011
return QueryManager.ExecuteSum(
10121012
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
10131013
selector,
@@ -1028,7 +1028,7 @@ public float Sum(Expression<Func<T, float>> selector)
10281028
public virtual float Sum(ISpecification<T> criteria, Expression<Func<T, float>> selector)
10291029
{
10301030
var selectFunc = selector.Compile();
1031-
var predicate = criteria.Predicate.Compile();
1031+
var predicate = criteria?.Predicate?.Compile();
10321032
return QueryManager.ExecuteSum(
10331033
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
10341034
selector,
@@ -1049,7 +1049,7 @@ public float Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, float>>
10491049
public virtual float? Sum(ISpecification<T> criteria, Expression<Func<T, float?>> selector)
10501050
{
10511051
var selectFunc = selector.Compile();
1052-
var predicate = criteria.Predicate.Compile();
1052+
var predicate = criteria?.Predicate?.Compile();
10531053
return QueryManager.ExecuteSum(
10541054
() => criteria == null ? BaseQuery().Sum(selectFunc) : BaseQuery().Where(predicate).Sum(selectFunc),
10551055
selector,
@@ -1070,7 +1070,7 @@ public double Average(Expression<Func<T, int>> selector)
10701070
public virtual double Average(ISpecification<T> criteria, Expression<Func<T, int>> selector)
10711071
{
10721072
var selectFunc = selector.Compile();
1073-
var predicate = criteria.Predicate.Compile();
1073+
var predicate = criteria?.Predicate?.Compile();
10741074
return QueryManager.ExecuteAverage(
10751075
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
10761076
selector,
@@ -1091,7 +1091,7 @@ public double Average(Expression<Func<T, bool>> predicate, Expression<Func<T, in
10911091
public virtual double? Average(ISpecification<T> criteria, Expression<Func<T, int?>> selector)
10921092
{
10931093
var selectFunc = selector.Compile();
1094-
var predicate = criteria.Predicate.Compile();
1094+
var predicate = criteria?.Predicate?.Compile();
10951095
return QueryManager.ExecuteAverage(
10961096
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
10971097
selector,
@@ -1112,7 +1112,7 @@ public double Average(Expression<Func<T, long>> selector)
11121112
public virtual double Average(ISpecification<T> criteria, Expression<Func<T, long>> selector)
11131113
{
11141114
var selectFunc = selector.Compile();
1115-
var predicate = criteria.Predicate.Compile();
1115+
var predicate = criteria?.Predicate?.Compile();
11161116
return QueryManager.ExecuteAverage(
11171117
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
11181118
selector,
@@ -1133,7 +1133,7 @@ public double Average(Expression<Func<T, bool>> predicate, Expression<Func<T, lo
11331133
public virtual double? Average(ISpecification<T> criteria, Expression<Func<T, long?>> selector)
11341134
{
11351135
var selectFunc = selector.Compile();
1136-
var predicate = criteria.Predicate.Compile();
1136+
var predicate = criteria?.Predicate?.Compile();
11371137
return QueryManager.ExecuteAverage(
11381138
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
11391139
selector,
@@ -1154,7 +1154,7 @@ public decimal Average(Expression<Func<T, decimal>> selector)
11541154
public virtual decimal Average(ISpecification<T> criteria, Expression<Func<T, decimal>> selector)
11551155
{
11561156
var selectFunc = selector.Compile();
1157-
var predicate = criteria.Predicate.Compile();
1157+
var predicate = criteria?.Predicate?.Compile();
11581158
return QueryManager.ExecuteAverage(
11591159
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
11601160
selector,
@@ -1175,7 +1175,7 @@ public decimal Average(Expression<Func<T, bool>> predicate, Expression<Func<T, d
11751175
public virtual decimal? Average(ISpecification<T> criteria, Expression<Func<T, decimal?>> selector)
11761176
{
11771177
var selectFunc = selector.Compile();
1178-
var predicate = criteria.Predicate.Compile();
1178+
var predicate = criteria?.Predicate?.Compile();
11791179
return QueryManager.ExecuteAverage(
11801180
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
11811181
selector,
@@ -1196,7 +1196,7 @@ public double Average(Expression<Func<T, double>> selector)
11961196
public virtual double Average(ISpecification<T> criteria, Expression<Func<T, double>> selector)
11971197
{
11981198
var selectFunc = selector.Compile();
1199-
var predicate = criteria.Predicate.Compile();
1199+
var predicate = criteria?.Predicate?.Compile();
12001200
return QueryManager.ExecuteAverage(
12011201
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
12021202
selector,
@@ -1217,7 +1217,7 @@ public double Average(Expression<Func<T, bool>> predicate, Expression<Func<T, do
12171217
public virtual double? Average(ISpecification<T> criteria, Expression<Func<T, double?>> selector)
12181218
{
12191219
var selectFunc = selector.Compile();
1220-
var predicate = criteria.Predicate.Compile();
1220+
var predicate = criteria?.Predicate?.Compile();
12211221
return QueryManager.ExecuteAverage(
12221222
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
12231223
selector,
@@ -1238,7 +1238,7 @@ public float Average(Expression<Func<T, float>> selector)
12381238
public virtual float Average(ISpecification<T> criteria, Expression<Func<T, float>> selector)
12391239
{
12401240
var selectFunc = selector.Compile();
1241-
var predicate = criteria.Predicate.Compile();
1241+
var predicate = criteria?.Predicate?.Compile();
12421242
return QueryManager.ExecuteAverage(
12431243
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
12441244
selector,
@@ -1259,7 +1259,7 @@ public float Average(Expression<Func<T, bool>> predicate, Expression<Func<T, flo
12591259
public virtual float? Average(ISpecification<T> criteria, Expression<Func<T, float?>> selector)
12601260
{
12611261
var selectFunc = selector.Compile();
1262-
var predicate = criteria.Predicate.Compile();
1262+
var predicate = criteria?.Predicate?.Compile();
12631263
return QueryManager.ExecuteAverage(
12641264
() => criteria == null ? BaseQuery().Average(selectFunc) : BaseQuery().Where(predicate).Average(selectFunc),
12651265
selector,
@@ -1280,7 +1280,7 @@ public TResult Min<TResult>(Expression<Func<T, TResult>> selector)
12801280
public virtual TResult Min<TResult>(ISpecification<T> criteria, Expression<Func<T, TResult>> selector)
12811281
{
12821282
var selectFunc = selector.Compile();
1283-
var predicate = criteria.Predicate.Compile();
1283+
var predicate = criteria?.Predicate?.Compile();
12841284
return QueryManager.ExecuteMin(
12851285
() => criteria == null ? BaseQuery().Min(selectFunc) : BaseQuery().Where(predicate).Min(selectFunc),
12861286
selector,
@@ -1301,7 +1301,7 @@ public TResult Max<TResult>(Expression<Func<T, TResult>> selector)
13011301
public virtual TResult Max<TResult>(ISpecification<T> criteria, Expression<Func<T, TResult>> selector)
13021302
{
13031303
var selectFunc = selector.Compile();
1304-
var predicate = criteria.Predicate.Compile();
1304+
var predicate = criteria?.Predicate?.Compile();
13051305
return QueryManager.ExecuteMax(
13061306
() => criteria == null ? BaseQuery().Max(selectFunc) : BaseQuery().Where(predicate).Max(selectFunc),
13071307
selector,

SharpRepository.Repository/SharpRepository.Repository.DotNetCore.csproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@
55
</PropertyGroup>
66
<PropertyGroup>
77
<TargetFramework>netstandard1.6</TargetFramework>
8+
<PackageId>SharpRepository.Repository</PackageId>
9+
<PackageVersion>2.0.0-alpha1</PackageVersion>
10+
<Authors>Ben Griswold, Jeff Treuting, Fairway Technologies, Omar Piani, Eivind Gussiås Løkseth</Authors>
11+
<Description>SharpRepository is a generic repository</Description>
12+
<Summary>Written in C#, includes support for various relational, document and object databases including Entity Framework, RavenDB, MongoDB, CouchDB and Db4o. SharpRepository includes Xml and InMemory repository implementations as well. SharpRepository offers built-in caching options for AppFabric, memcached and the standard System.Runtime.Caching. SharpRepository also supports Specifications, FetchStrategies, Batches and Traits!</Summary>
13+
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
14+
<PackageReleaseNotes>Compatibility with .NET Standard 1.6</PackageReleaseNotes>
15+
<Copyright>Copyright 2017 (c) Contoso Corporation. All rights reserved.</Copyright>
16+
<PackageTags>SharpRepository Repository</PackageTags>
817
</PropertyGroup>
918
<ItemGroup>
1019
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.0" />
@@ -13,4 +22,7 @@
1322
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
1423
<PackageReference Include="System.Security.Cryptography.Algorithms" Version="4.3.0" />
1524
</ItemGroup>
25+
<ItemGroup>
26+
<Folder Include="Properties\" />
27+
</ItemGroup>
1628
</Project>

SharpRepository.Tests.Integration/AggregateQueriesTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ public void Average_All_Should_Return_Average(IRepository<Contact, string> repos
217217
{
218218
for (var i = 1; i <= 3; i++)
219219
{
220-
var contact = new Contact { Name = "Test User " + i, ContactTypeId =i};
220+
var contact = new Contact { Name = "Test User " + i, ContactTypeId = i};
221221
repository.Add(contact);
222222
}
223223

0 commit comments

Comments
 (0)