@@ -164,6 +164,11 @@ public class Order : Entity
164
164
165
165
[ Field ( Precision = 10 , Scale = 0 ) ]
166
166
public decimal Count { get ; set ; }
167
+
168
+ public Order ( Session session )
169
+ : base ( session )
170
+ {
171
+ }
167
172
}
168
173
}
169
174
@@ -173,7 +178,7 @@ public class IssueJira0761_ReadingAvgAndSumByDecimalField : AutoBuildTest
173
178
{
174
179
private const int OrderCount = 100 ;
175
180
176
- private Session globalSession ;
181
+ protected override bool InitGlobalSession => true ;
177
182
178
183
protected override void CheckRequirements ( ) => Require . ProviderIs ( StorageProvider . SqlServer | StorageProvider . PostgreSql ) ;
179
184
@@ -187,11 +192,8 @@ protected override DomainConfiguration BuildConfiguration()
187
192
188
193
protected override void PopulateData ( )
189
194
{
190
- var sAndT = CreateSessionAndTransaction ( ) ;
191
- globalSession = sAndT . Item1 ;
192
-
193
195
for ( var i = 0 ; i < OrderCount ; i ++ ) {
194
- _ = new Order ( ) {
196
+ _ = new Order ( GlobalSession ) {
195
197
Sum = ( i % 2 == 0 ) ? 100000000000000000000000000.11m : 100000000000000000000000000.12m ,
196
198
Sum2 = 100000000000000000000000000.3m ,
197
199
Sum3 = 10000000000000000000000000.33m ,
@@ -207,31 +209,31 @@ protected override void PopulateData()
207
209
}
208
210
209
211
foreach ( var i in Enumerable . Range ( 1 , 1000 ) ) {
210
- _ = new ValueByEntityRefCase ( globalSession ) {
211
- Ref = new DirectFieldValueCase ( globalSession ) {
212
+ _ = new ValueByEntityRefCase ( GlobalSession ) {
213
+ Ref = new DirectFieldValueCase ( GlobalSession ) {
212
214
Accepted = 163767
213
215
}
214
216
} ;
215
217
216
- _ = new KeyValueByEntityRefCase ( globalSession ) {
217
- Ref = new KeyExpressionCase ( globalSession , 163767 + i )
218
+ _ = new KeyValueByEntityRefCase ( GlobalSession ) {
219
+ Ref = new KeyExpressionCase ( GlobalSession , 163767 + i )
218
220
} ;
219
221
220
- _ = new DecimalValueStructureEntityByRefCase ( globalSession ) {
221
- Ref = new DecimalValueStructureCase ( globalSession ) {
222
- Struct = new DecimalValueStructure ( globalSession ) {
222
+ _ = new DecimalValueStructureEntityByRefCase ( GlobalSession ) {
223
+ Ref = new DecimalValueStructureCase ( GlobalSession ) {
224
+ Struct = new DecimalValueStructure ( GlobalSession ) {
223
225
Value = 163767 ,
224
226
Code = i
225
227
}
226
228
}
227
229
} ;
228
230
}
229
231
230
- globalSession . SaveChanges ( ) ;
232
+ GlobalSession . SaveChanges ( ) ;
231
233
232
234
#if DEBUG
233
235
// just to keep data in database
234
- sAndT . Item2 . Complete ( ) ;
236
+ GlobalTransaction . Complete ( ) ;
235
237
#endif
236
238
}
237
239
@@ -240,43 +242,43 @@ protected override void PopulateData()
240
242
[ Test ]
241
243
public void AverageComplexTest ( )
242
244
{
243
- var queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum ) ;
245
+ var queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum ) ;
244
246
var fraction = queryResult - Math . Floor ( queryResult ) ;
245
247
Assert . That ( fraction , Is . EqualTo ( 0.11m ) . Or . EqualTo ( 0.12m ) ) ;
246
248
247
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum2 ) ;
249
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum2 ) ;
248
250
fraction = queryResult - Math . Floor ( queryResult ) ;
249
251
Assert . That ( fraction , Is . EqualTo ( 0.3m ) ) ;
250
252
251
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum3 ) ;
253
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum3 ) ;
252
254
fraction = queryResult - Math . Floor ( queryResult ) ;
253
255
Assert . That ( fraction , Is . EqualTo ( 0.33m ) ) ;
254
256
255
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum4 ) ;
257
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum4 ) ;
256
258
fraction = queryResult - Math . Floor ( queryResult ) ;
257
259
Assert . That ( fraction , Is . EqualTo ( 0.333m ) ) ;
258
260
259
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum5 ) ;
261
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum5 ) ;
260
262
fraction = queryResult - Math . Floor ( queryResult ) ;
261
263
Assert . That ( fraction , Is . EqualTo ( 0.3333m ) ) ;
262
264
263
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum6 ) ;
265
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum6 ) ;
264
266
fraction = queryResult - Math . Floor ( queryResult ) ;
265
267
Assert . That ( fraction , Is . EqualTo ( 0.33333m ) ) ;
266
268
267
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum7 ) ;
269
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum7 ) ;
268
270
fraction = queryResult - Math . Floor ( queryResult ) ;
269
271
Assert . That ( fraction , Is . EqualTo ( 0.333333m ) ) ;
270
272
271
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum8 ) ;
273
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum8 ) ;
272
274
fraction = queryResult - Math . Floor ( queryResult ) ;
273
275
Assert . That ( fraction , Is . EqualTo ( 0.3333333m ) ) ;
274
276
275
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum9 ) ;
277
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum9 ) ;
276
278
fraction = queryResult - Math . Floor ( queryResult ) ;
277
279
Assert . That ( fraction , Is . EqualTo ( 0.33333333m ) ) ;
278
280
279
- queryResult = globalSession . Query . All < Order > ( ) . Average ( o => o . Sum10 ) ;
281
+ queryResult = GlobalSession . Query . All < Order > ( ) . Average ( o => o . Sum10 ) ;
280
282
fraction = queryResult - Math . Floor ( queryResult ) ;
281
283
Assert . That ( fraction , Is . EqualTo ( 0.333333333m ) ) ;
282
284
}
@@ -332,10 +334,10 @@ public void AvgDecimalValueStructureEntityByRefCase()
332
334
[ Test ]
333
335
public void AvgDecimalExpressionInSourceExpressionsCase ( )
334
336
{
335
- var results = globalSession . Query . All < DirectFieldValueCase > ( )
337
+ var results = GlobalSession . Query . All < DirectFieldValueCase > ( )
336
338
. GroupBy ( e => e . Id , e => new { Split = e . Accepted * 0.01M } )
337
339
. Select ( g => g . Select ( x => x . Split ) . Distinct ( ) . Average ( ) ) . ToList ( ) ;
338
- var localResults = globalSession . Query . All < DirectFieldValueCase > ( ) . AsEnumerable ( )
340
+ var localResults = GlobalSession . Query . All < DirectFieldValueCase > ( ) . AsEnumerable ( )
339
341
. GroupBy ( e => e . Id , e => new { Split = e . Accepted * 0.01M } )
340
342
. Select ( g => g . Select ( x => x . Split ) . Distinct ( ) . Average ( ) ) . ToList ( ) ;
341
343
@@ -345,16 +347,16 @@ public void AvgDecimalExpressionInSourceExpressionsCase()
345
347
346
348
private void TestAverage < TEntity > ( Expression < Func < TEntity , decimal > > selector ) where TEntity : Entity
347
349
{
348
- var results = globalSession . Query . All < TEntity > ( ) . Average ( selector ) ;
349
- var localResults = globalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Average ( selector . Compile ( ) ) ;
350
+ var results = GlobalSession . Query . All < TEntity > ( ) . Average ( selector ) ;
351
+ var localResults = GlobalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Average ( selector . Compile ( ) ) ;
350
352
Assert . That ( results , Is . EqualTo ( localResults ) , $ "Failed on Average({ selector } )") ;
351
353
352
- results = globalSession . Query . All < TEntity > ( ) . Select ( selector ) . Average ( ) ;
353
- localResults = globalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Average ( ) ;
354
+ results = GlobalSession . Query . All < TEntity > ( ) . Select ( selector ) . Average ( ) ;
355
+ localResults = GlobalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Average ( ) ;
354
356
Assert . That ( results , Is . EqualTo ( localResults ) , $ "Failed on Select({ selector } ).Average()") ;
355
357
356
- results = globalSession . Query . All < TEntity > ( ) . Select ( selector ) . Distinct ( ) . Average ( ) ;
357
- localResults = globalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Distinct ( ) . Average ( ) ;
358
+ results = GlobalSession . Query . All < TEntity > ( ) . Select ( selector ) . Distinct ( ) . Average ( ) ;
359
+ localResults = GlobalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Distinct ( ) . Average ( ) ;
358
360
Assert . That ( results , Is . EqualTo ( localResults ) , $ "Failed on Select({ selector } ).Distinct().Average()") ;
359
361
}
360
362
@@ -367,44 +369,44 @@ public void SumComplexTest()
367
369
{
368
370
Require . ProviderIs ( StorageProvider . SqlServer , " MS SQL Server has scale reduction algorithm, PgSql doesn't" ) ;
369
371
370
- var queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum ) ;
371
- var localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum ) ;
372
+ var queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum ) ;
373
+ var localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum ) ;
372
374
Assert . That ( queryResult , Is . EqualTo ( localResult + 3 ) ) ;
373
375
374
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum2 ) ;
375
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum2 ) ;
376
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum2 ) ;
377
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum2 ) ;
376
378
Assert . That ( queryResult , Is . EqualTo ( localResult + 6 ) ) ;
377
379
378
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum3 ) ;
379
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum3 ) ;
380
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum3 ) ;
381
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum3 ) ;
380
382
Assert . That ( queryResult , Is . EqualTo ( localResult + 0.6m ) ) ;
381
383
382
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum4 ) ;
383
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum4 ) ;
384
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum4 ) ;
385
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum4 ) ;
384
386
Assert . That ( queryResult , Is . EqualTo ( localResult ) ) ;
385
387
386
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum5 ) ;
387
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum5 ) ;
388
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum5 ) ;
389
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum5 ) ;
388
390
Assert . That ( queryResult , Is . EqualTo ( localResult ) ) ;
389
391
390
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum6 ) ;
391
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum6 ) ;
392
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum6 ) ;
393
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum6 ) ;
392
394
Assert . That ( queryResult , Is . EqualTo ( localResult ) ) ;
393
395
394
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum7 ) ;
395
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum7 ) ;
396
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum7 ) ;
397
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum7 ) ;
396
398
Assert . That ( queryResult , Is . EqualTo ( localResult ) ) ;
397
399
398
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum8 ) ;
399
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum8 ) ;
400
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum8 ) ;
401
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum8 ) ;
400
402
Assert . That ( queryResult , Is . EqualTo ( localResult ) ) ;
401
403
402
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum9 ) ;
403
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum9 ) ;
404
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum9 ) ;
405
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum9 ) ;
404
406
Assert . That ( queryResult , Is . EqualTo ( localResult ) ) ;
405
407
406
- queryResult = globalSession . Query . All < Order > ( ) . Sum ( o => o . Sum10 ) ;
407
- localResult = globalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum10 ) ;
408
+ queryResult = GlobalSession . Query . All < Order > ( ) . Sum ( o => o . Sum10 ) ;
409
+ localResult = GlobalSession . Query . All < Order > ( ) . ToArray ( ) . Sum ( o => o . Sum10 ) ;
408
410
Assert . That ( queryResult , Is . EqualTo ( localResult ) ) ;
409
411
}
410
412
@@ -459,10 +461,10 @@ public void SumDecimalValueStructureEntityByRefCase()
459
461
[ Test ]
460
462
public void SumDecimalExpressionInSourceExpressionsCase ( )
461
463
{
462
- var results = globalSession . Query . All < DirectFieldValueCase > ( )
464
+ var results = GlobalSession . Query . All < DirectFieldValueCase > ( )
463
465
. GroupBy ( e => e . Id , e => new { Split = e . Accepted * 0.01M } )
464
466
. Select ( g => g . Select ( x => x . Split ) . Distinct ( ) . Sum ( ) ) . ToList ( ) ;
465
- var localResults = globalSession . Query . All < DirectFieldValueCase > ( ) . AsEnumerable ( )
467
+ var localResults = GlobalSession . Query . All < DirectFieldValueCase > ( ) . AsEnumerable ( )
466
468
. GroupBy ( e => e . Id , e => new { Split = e . Accepted * 0.01M } )
467
469
. Select ( g => g . Select ( x => x . Split ) . Distinct ( ) . Sum ( ) ) . ToList ( ) ;
468
470
@@ -472,16 +474,16 @@ public void SumDecimalExpressionInSourceExpressionsCase()
472
474
473
475
private void TestSum < TEntity > ( Expression < Func < TEntity , decimal > > selector ) where TEntity : Entity
474
476
{
475
- var results = globalSession . Query . All < TEntity > ( ) . Sum ( selector ) ;
476
- var localResults = globalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Sum ( selector . Compile ( ) ) ;
477
+ var results = GlobalSession . Query . All < TEntity > ( ) . Sum ( selector ) ;
478
+ var localResults = GlobalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Sum ( selector . Compile ( ) ) ;
477
479
Assert . That ( results , Is . EqualTo ( localResults ) , $ "Failed on Sum({ selector } )") ;
478
480
479
- results = globalSession . Query . All < TEntity > ( ) . Select ( selector ) . Sum ( ) ;
480
- localResults = globalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Sum ( ) ;
481
+ results = GlobalSession . Query . All < TEntity > ( ) . Select ( selector ) . Sum ( ) ;
482
+ localResults = GlobalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Sum ( ) ;
481
483
Assert . That ( results , Is . EqualTo ( localResults ) , $ "Failed on Select({ selector } ).Sum()") ;
482
484
483
- results = globalSession . Query . All < TEntity > ( ) . Select ( selector ) . Distinct ( ) . Sum ( ) ;
484
- localResults = globalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Distinct ( ) . Sum ( ) ;
485
+ results = GlobalSession . Query . All < TEntity > ( ) . Select ( selector ) . Distinct ( ) . Sum ( ) ;
486
+ localResults = GlobalSession . Query . All < TEntity > ( ) . AsEnumerable ( ) . Select ( selector . Compile ( ) ) . Distinct ( ) . Sum ( ) ;
485
487
Assert . That ( results , Is . EqualTo ( localResults ) , $ "Failed on Select({ selector } ).Distinct().Sum()") ;
486
488
}
487
489
0 commit comments