@@ -34,13 +34,13 @@ public IEnumerator<TItem> GetEnumerator()
3434 var container = new StrongReferenceContainer ( null ) ;
3535 foreach ( var item in source ) {
3636 resultQueue . Enqueue ( item ) ;
37- if ( item != null ) {
37+ if ( item != null ) {
3838 foreach ( var extractorNode in aggregatedNodes ) {
3939 container . JoinIfPossible ( RegisterPrefetch ( extractorNode . ExtractKeys ( item ) , extractorNode ) ) ;
4040 }
4141 }
4242
43- if ( currentTaskCount == sessionHandler . PrefetchTaskExecutionCount ) {
43+ if ( currentTaskCount == sessionHandler . PrefetchTaskExecutionCount ) {
4444 continue ;
4545 }
4646
@@ -54,6 +54,7 @@ public IEnumerator<TItem> GetEnumerator()
5454
5555 currentTaskCount = sessionHandler . PrefetchTaskExecutionCount ;
5656 }
57+
5758 while ( container . JoinIfPossible ( sessionHandler . ExecutePrefetchTasks ( ) ) ) {
5859 container . JoinIfPossible ( ProcessFetchedElements ( ) ) ;
5960 }
@@ -72,7 +73,7 @@ private StrongReferenceContainer RegisterPrefetch(IReadOnlyCollection<Key> keys,
7273 }
7374
7475 foreach ( var key in keys ) {
75- var type = key . HasExactType || modelType == null
76+ var type = key . HasExactType || modelType == null
7677 ? key . TypeReference . Type
7778 : modelType ;
7879 if ( ! key . HasExactType && ! type . IsLeaf ) {
@@ -83,11 +84,14 @@ private StrongReferenceContainer RegisterPrefetch(IReadOnlyCollection<Key> keys,
8384 if ( ! fieldDescriptorCache . TryGetValue ( cacheKey , out var fieldDescriptors ) ) {
8485 fieldDescriptors = PrefetchHelper
8586 . GetCachedDescriptorsForFieldsLoadedByDefault ( session . Domain , type )
86- . Concat ( fieldContainer . NestedNodes . Select ( fn => new PrefetchFieldDescriptor ( fn . Field , false , true ) ) ) . ToList ( ) ;
87+ . Concat ( fieldContainer . NestedNodes . Select ( fn => new PrefetchFieldDescriptor ( fn . Field , false , true ) ) )
88+ . ToList ( ) ;
8789 fieldDescriptorCache . Add ( cacheKey , fieldDescriptors ) ;
8890 }
91+
8992 container . JoinIfPossible ( sessionHandler . Prefetch ( key , type , fieldDescriptors ) ) ;
9093 }
94+
9195 var nestedContainers = fieldContainer . NestedNodes . OfType < IHasNestedNodes > ( ) ;
9296 foreach ( var nestedContainer in nestedContainers ) {
9397 prefetchQueue . Enqueue ( new Pair < IEnumerable < Key > , IHasNestedNodes > ( keys , nestedContainer ) ) ;
@@ -101,9 +105,11 @@ private StrongReferenceContainer ProcessFetchedElements()
101105 var container = new StrongReferenceContainer ( null ) ;
102106 while ( unknownTypeQueue . TryDequeue ( out var unknownKey ) ) {
103107 var unknownType = session . EntityStateCache [ unknownKey , false ] . Type ;
104- var unknownDescriptors = PrefetchHelper . GetCachedDescriptorsForFieldsLoadedByDefault ( session . Domain , unknownType ) ;
108+ var unknownDescriptors =
109+ PrefetchHelper . GetCachedDescriptorsForFieldsLoadedByDefault ( session . Domain , unknownType ) ;
105110 sessionHandler . Prefetch ( unknownKey , unknownType , unknownDescriptors ) ;
106111 }
112+
107113 while ( prefetchQueue . TryDequeue ( out var pair ) ) {
108114 var parentKeys = pair . First ;
109115 var nestedNodes = pair . Second ;
@@ -117,14 +123,18 @@ private StrongReferenceContainer ProcessFetchedElements()
117123 throw new InvalidOperationException ( string . Format ( Strings . ExCannotResolveEntityWithKeyX , parentKey ) ) ;
118124 }
119125 }
126+
120127 keys . AddRange ( nestedNodes . ExtractKeys ( entityState . Entity ) ) ;
121128 }
129+
122130 container . JoinIfPossible ( RegisterPrefetch ( keys , nestedNodes ) ) ;
123131 }
132+
124133 return container ;
125134 }
126135
127- public PrefetchQueryEnumerable ( Session session , IEnumerable < TItem > source , SinglyLinkedList < KeyExtractorNode < TItem > > nodes )
136+ public PrefetchQueryEnumerable ( Session session , IEnumerable < TItem > source ,
137+ SinglyLinkedList < KeyExtractorNode < TItem > > nodes )
128138 {
129139 this . session = session ;
130140 this . source = source ;
0 commit comments