@@ -174,6 +174,53 @@ public async Task SelectModeFetchLazyPropertiesAsync()
174174 Assert . That ( NHibernateUtil . IsInitialized ( root ) , Is . True ) ;
175175 Assert . That ( root . LazyProp , Is . Not . Null ) ;
176176 Assert . That ( NHibernateUtil . IsPropertyInitialized ( root , nameof ( root . LazyProp ) ) , Is . True , "Lazy property must be fetched." ) ;
177+ Assert . That ( NHibernateUtil . IsPropertyInitialized ( root , nameof ( root . LazyProp2 ) ) , Is . True , "Lazy property must be fetched." ) ;
178+
179+ Assert . That ( sqlLog . Appender . GetEvents ( ) . Length , Is . EqualTo ( 1 ) , "Only one SQL select is expected" ) ;
180+ }
181+ }
182+
183+ [ Test ]
184+ public async Task SelectModeFetchKeepLazyPropertiesUninitializedAsync ( )
185+ {
186+ using ( var sqlLog = new SqlLogSpy ( ) )
187+ using ( var session = OpenSession ( ) )
188+ {
189+ var root = await ( session . QueryOver < EntityComplex > ( )
190+ . Fetch ( SelectMode . Fetch , ec => ec )
191+ . Where ( ec => ec . LazyProp != null )
192+ . Take ( 1 )
193+ . SingleOrDefaultAsync ( ) ) ;
194+
195+ Assert . That ( root , Is . Not . Null ) ;
196+ Assert . That ( NHibernateUtil . IsInitialized ( root ) , Is . True ) ;
197+ Assert . That ( NHibernateUtil . IsPropertyInitialized ( root , nameof ( root . LazyProp ) ) , Is . False , "Property must be lazy." ) ;
198+ Assert . That ( NHibernateUtil . IsPropertyInitialized ( root , nameof ( root . LazyProp2 ) ) , Is . False , "Property must be lazy." ) ;
199+
200+ Assert . That ( sqlLog . Appender . GetEvents ( ) . Length , Is . EqualTo ( 1 ) , "Only one SQL select is expected" ) ;
201+ }
202+ }
203+
204+ [ Test ]
205+ public async Task SelectModeFetchLazyPropertiesFetchGroupAsync ( )
206+ {
207+ using ( var sqlLog = new SqlLogSpy ( ) )
208+ using ( var session = OpenSession ( ) )
209+ {
210+ var root = await ( session . QueryOver < EntityComplex > ( )
211+ . Fetch ( SelectMode . FetchLazyPropertyGroup , ec => ec . LazyProp , ec => ec . LazyProp2 , ec => ec . SameTypeChild . LazyProp2 )
212+ . Where ( ec => ec . Id == _parentEntityComplexId )
213+ . SingleOrDefaultAsync ( ) ) ;
214+
215+ Assert . That ( root , Is . Not . Null ) ;
216+ Assert . That ( NHibernateUtil . IsInitialized ( root ) , Is . True ) ;
217+ Assert . That ( root . LazyProp , Is . Not . Null ) ;
218+ Assert . That ( NHibernateUtil . IsPropertyInitialized ( root , nameof ( root . LazyProp ) ) , Is . True , "Lazy property must be fetched." ) ;
219+ Assert . That ( NHibernateUtil . IsPropertyInitialized ( root , nameof ( root . LazyProp2 ) ) , Is . True , "Lazy property must be fetched." ) ;
220+ Assert . That ( NHibernateUtil . IsInitialized ( root . SameTypeChild ) , Is . True , "Object must be initialized." ) ;
221+ Assert . That ( root . SameTypeChild , Is . Not . Null ) ;
222+ Assert . That ( NHibernateUtil . IsPropertyInitialized ( root . SameTypeChild , nameof ( root . LazyProp2 ) ) , Is . True , "Lazy property must be fetched." ) ;
223+ Assert . That ( NHibernateUtil . IsPropertyInitialized ( root . SameTypeChild , nameof ( root . LazyProp ) ) , Is . False , "Property must be lazy." ) ;
177224
178225 Assert . That ( sqlLog . Appender . GetEvents ( ) . Length , Is . EqualTo ( 1 ) , "Only one SQL select is expected" ) ;
179226 }
@@ -579,7 +626,16 @@ protected override HbmMapping GetMappings()
579626
580627 rc . Property ( x => x . Name ) ;
581628
582- rc . Property ( ep => ep . LazyProp , m => m . Lazy ( true ) ) ;
629+ rc . Property ( ep => ep . LazyProp , m =>
630+ {
631+ m . Lazy ( true ) ;
632+ m . FetchGroup ( "LazyGroup" ) ;
633+ } ) ;
634+ rc . Property ( ep => ep . LazyProp2 , m =>
635+ {
636+ m . Lazy ( true ) ;
637+ m . FetchGroup ( "LazyGroup2" ) ;
638+ } ) ;
583639
584640 rc . ManyToOne (
585641 ep => ep . Child1 ,
@@ -751,9 +807,12 @@ protected override void OnSetUp()
751807 Child1 = child1 ,
752808 Child2 = child2 ,
753809 LazyProp = "SomeBigValue" ,
810+ LazyProp2 = "SomeBigValue2" ,
754811 SameTypeChild = new EntityComplex ( )
755812 {
756- Name = "ComplexEntityChild"
813+ Name = "ComplexEntityChild" ,
814+ LazyProp = "LazyProp1" ,
815+ LazyProp2 = "LazyProp2" ,
757816 } ,
758817 ChildrenList = new List < EntitySimpleChild > { child3 , child1 , child4 } ,
759818 ChildrenListEmpty = new List < EntityComplex > { } ,
0 commit comments