File tree Expand file tree Collapse file tree 5 files changed +53
-21
lines changed Expand file tree Collapse file tree 5 files changed +53
-21
lines changed Original file line number Diff line number Diff line change @@ -33,4 +33,5 @@ _ReSharper*/
33
33
SharedAssemblyInfo. *
34
34
hibernate.cfg.xml
35
35
.vs /
36
- packages /
36
+ packages /
37
+ .idea /
Original file line number Diff line number Diff line change @@ -358,6 +358,29 @@ public async Task UseNotEqPropertyWithProjectionAsync()
358
358
}
359
359
}
360
360
361
+ [ Test ]
362
+ public async Task UseSumWithNullResultWithProjectionAsync ( )
363
+ {
364
+ using ( ISession session = Sfi . OpenSession ( ) )
365
+ {
366
+ long sum = await ( session . CreateCriteria ( typeof ( Reptile ) )
367
+ . SetProjection ( Projections . Sum ( Projections . Id ( ) ) )
368
+ . UniqueResultAsync < long > ( ) ) ;
369
+ Assert . AreEqual ( 0 , sum ) ;
370
+ }
371
+ }
361
372
373
+ [ Test ]
374
+ public async Task UseSubquerySumWithNullResultWithProjectionAsync ( )
375
+ {
376
+ using ( ISession session = Sfi . OpenSession ( ) )
377
+ {
378
+ int sum = await ( session . CreateCriteria ( typeof ( Enrolment ) )
379
+ . CreateCriteria ( "Student" , "s" )
380
+ . SetProjection ( Projections . Sum ( Projections . SqlFunction ( "length" , NHibernateUtil . Int32 , Projections . Property ( "s.Name" ) ) ) )
381
+ . UniqueResultAsync < int > ( ) ) ;
382
+ Assert . AreEqual ( 0 , sum ) ;
383
+ }
384
+ }
362
385
}
363
386
}
Original file line number Diff line number Diff line change @@ -347,6 +347,29 @@ public void UseNotEqPropertyWithProjection()
347
347
}
348
348
}
349
349
350
+ [ Test ]
351
+ public void UseSumWithNullResultWithProjection ( )
352
+ {
353
+ using ( ISession session = Sfi . OpenSession ( ) )
354
+ {
355
+ long sum = session . CreateCriteria ( typeof ( Reptile ) )
356
+ . SetProjection ( Projections . Sum ( Projections . Id ( ) ) )
357
+ . UniqueResult < long > ( ) ;
358
+ Assert . AreEqual ( 0 , sum ) ;
359
+ }
360
+ }
350
361
362
+ [ Test ]
363
+ public void UseSubquerySumWithNullResultWithProjection ( )
364
+ {
365
+ using ( ISession session = Sfi . OpenSession ( ) )
366
+ {
367
+ int sum = session . CreateCriteria ( typeof ( Enrolment ) )
368
+ . CreateCriteria ( "Student" , "s" )
369
+ . SetProjection ( Projections . Sum ( Projections . SqlFunction ( "length" , NHibernateUtil . Int32 , Projections . Property ( "s.Name" ) ) ) )
370
+ . UniqueResult < int > ( ) ;
371
+ Assert . AreEqual ( 0 , sum ) ;
372
+ }
373
+ }
351
374
}
352
375
}
Original file line number Diff line number Diff line change @@ -110,19 +110,13 @@ public sealed partial class Subcriteria : ICriteria
110
110
return root . ListAsync < T > ( cancellationToken ) ;
111
111
}
112
112
113
- public async Task < T > UniqueResultAsync < T > ( CancellationToken cancellationToken = default ( CancellationToken ) )
113
+ public Task < T > UniqueResultAsync < T > ( CancellationToken cancellationToken = default ( CancellationToken ) )
114
114
{
115
- cancellationToken . ThrowIfCancellationRequested ( ) ;
116
- object result = await ( UniqueResultAsync ( cancellationToken ) ) . ConfigureAwait ( false ) ;
117
- if ( result == null && typeof ( T ) . IsValueType )
118
- {
119
- throw new InvalidCastException (
120
- "UniqueResult<T>() cannot cast null result to value type. Call UniqueResult<T?>() instead" ) ;
121
- }
122
- else
115
+ if ( cancellationToken . IsCancellationRequested )
123
116
{
124
- return ( T ) result ;
117
+ return Task . FromCanceled < T > ( cancellationToken ) ;
125
118
}
119
+ return root . UniqueResultAsync < T > ( cancellationToken ) ;
126
120
}
127
121
128
122
public Task < object > UniqueResultAsync ( CancellationToken cancellationToken = default ( CancellationToken ) )
Original file line number Diff line number Diff line change @@ -808,16 +808,7 @@ public IList<T> List<T>()
808
808
809
809
public T UniqueResult < T > ( )
810
810
{
811
- object result = UniqueResult ( ) ;
812
- if ( result == null && typeof ( T ) . IsValueType )
813
- {
814
- throw new InvalidCastException (
815
- "UniqueResult<T>() cannot cast null result to value type. Call UniqueResult<T?>() instead" ) ;
816
- }
817
- else
818
- {
819
- return ( T ) result ;
820
- }
811
+ return root . UniqueResult < T > ( ) ;
821
812
}
822
813
823
814
public void ClearOrders ( )
You can’t perform that action at this time.
0 commit comments