@@ -19,7 +19,7 @@ internal sealed class PrefetchKeyIterator<T> : IEnumerable<T>, IAsyncEnumerable<
1919
2020 public IEnumerator < T > GetEnumerator ( )
2121 {
22- session . Domain . Model . Types . TryGetValue ( typeof ( T ) , out var modelType ) ;
22+ session . Domain . Model . Types . TryGetValue ( typeof ( T ) , out var modelType ) ;
2323 var taskCount = session . Handler . PrefetchTaskExecutionCount ;
2424 var container = new StrongReferenceContainer ( null ) ;
2525 var resultQueue = new Queue < Key > ( ) ;
@@ -30,7 +30,7 @@ public IEnumerator<T> GetEnumerator()
3030 exists = se . MoveNext ( ) ;
3131 if ( exists ) {
3232 var key = se . Current ;
33- var type = key . HasExactType || modelType == null
33+ var type = key . HasExactType || modelType == null
3434 ? key . TypeReference . Type
3535 : modelType ;
3636 if ( ! key . HasExactType && ! type . IsLeaf ) {
@@ -41,7 +41,8 @@ public IEnumerator<T> GetEnumerator()
4141 var defaultDescriptors = PrefetchHelper . GetCachedDescriptorsForFieldsLoadedByDefault ( session . Domain , type ) ;
4242 container . JoinIfPossible ( session . Handler . Prefetch ( key , type , defaultDescriptors ) ) ;
4343 }
44- if ( exists && taskCount == session . Handler . PrefetchTaskExecutionCount ) {
44+
45+ if ( exists && taskCount == session . Handler . PrefetchTaskExecutionCount ) {
4546 continue ;
4647 }
4748
@@ -53,11 +54,14 @@ public IEnumerator<T> GetEnumerator()
5354 while ( unknownTypeQueue . Count > 0 ) {
5455 var unknownKey = unknownTypeQueue . Dequeue ( ) ;
5556 var unknownType = session . EntityStateCache [ unknownKey , false ] . Type ;
56- var unknownDescriptors = PrefetchHelper . GetCachedDescriptorsForFieldsLoadedByDefault ( session . Domain , unknownType ) ;
57+ var unknownDescriptors =
58+ PrefetchHelper . GetCachedDescriptorsForFieldsLoadedByDefault ( session . Domain , unknownType ) ;
5759 session . Handler . Prefetch ( unknownKey , unknownType , unknownDescriptors ) ;
5860 }
61+
5962 session . Handler . ExecutePrefetchTasks ( ) ;
6063 }
64+
6165 while ( resultQueue . Count > 0 ) {
6266 yield return ( T ) ( IEntity ) session . EntityStateCache [ resultQueue . Dequeue ( ) , true ] . Entity ;
6367 }
@@ -68,7 +72,7 @@ public IEnumerator<T> GetEnumerator()
6872
6973 public async IAsyncEnumerator < T > GetAsyncEnumerator ( CancellationToken token = default )
7074 {
71- session . Domain . Model . Types . TryGetValue ( typeof ( T ) , out var modelType ) ;
75+ session . Domain . Model . Types . TryGetValue ( typeof ( T ) , out var modelType ) ;
7276 var taskCount = session . Handler . PrefetchTaskExecutionCount ;
7377 var container = new StrongReferenceContainer ( null ) ;
7478 var resultQueue = new Queue < Key > ( ) ;
@@ -79,7 +83,7 @@ public async IAsyncEnumerator<T> GetAsyncEnumerator(CancellationToken token = de
7983 exists = se . MoveNext ( ) ;
8084 if ( exists ) {
8185 var key = se . Current ;
82- var type = key . HasExactType || modelType == null
86+ var type = key . HasExactType || modelType == null
8387 ? key . TypeReference . Type
8488 : modelType ;
8589 if ( ! key . HasExactType && ! type . IsLeaf ) {
@@ -91,7 +95,8 @@ public async IAsyncEnumerator<T> GetAsyncEnumerator(CancellationToken token = de
9195 container . JoinIfPossible (
9296 await session . Handler . PrefetchAsync ( key , type , defaultDescriptors , token ) . ConfigureAwait ( false ) ) ;
9397 }
94- if ( exists && taskCount == session . Handler . PrefetchTaskExecutionCount ) {
98+
99+ if ( exists && taskCount == session . Handler . PrefetchTaskExecutionCount ) {
95100 continue ;
96101 }
97102
@@ -109,8 +114,10 @@ public async IAsyncEnumerator<T> GetAsyncEnumerator(CancellationToken token = de
109114 await session . Handler . PrefetchAsync (
110115 unknownKey , unknownType , unknownDescriptors , token ) . ConfigureAwait ( false ) ;
111116 }
117+
112118 await session . Handler . ExecutePrefetchTasksAsync ( token ) . ConfigureAwait ( false ) ;
113119 }
120+
114121 while ( resultQueue . Count > 0 ) {
115122 yield return ( T ) ( IEntity ) session . EntityStateCache [ resultQueue . Dequeue ( ) , true ] . Entity ;
116123 }
0 commit comments