@@ -659,25 +659,26 @@ async Task IEntityStoreAsync.DeleteByIdsAsync<T>(ICollection ids, CancellationTo
659659
660660 async Task IEntityStoreAsync . DeleteAllAsync < T > ( CancellationToken token )
661661 {
662- await DeleteAllAsync < T > ( 0 , 1000 , token ) . ConfigureAwait ( false ) ;
662+ await DeleteAllAsync < T > ( 0 , RedisConfig . DeleteAllBatchSize , token ) . ConfigureAwait ( false ) ;
663663 }
664664
665665 private async Task DeleteAllAsync < T > ( ulong cursor , int pageSize , CancellationToken token )
666666 {
667667 var typeIdsSetKey = this . GetTypeIdsSetKey < T > ( ) ;
668- var scanResult = await NativeAsync . SScanAsync ( typeIdsSetKey , cursor , pageSize , token : token ) . ConfigureAwait ( false ) ;
669- var lastCursor = scanResult . Cursor ;
670- var ids = scanResult . Results . Select ( x => x . FromUtf8Bytes ( ) ) ;
671- var urnKeys = ids . Map ( t => AsAsync ( ) . UrnKey < T > ( t ) ) ;
672- if ( urnKeys . Count > 0 )
668+ var callCount = 0 ;
669+ while ( cursor != 0 || callCount == 0 )
673670 {
674- await AsAsync ( ) . RemoveEntryAsync ( urnKeys . ToArray ( ) , token ) . ConfigureAwait ( false ) ;
671+ var scanResult = await NativeAsync . SScanAsync ( typeIdsSetKey , cursor , pageSize , token : token ) . ConfigureAwait ( false ) ;
672+ callCount ++ ;
673+ cursor = scanResult . Cursor ;
674+ var ids = scanResult . Results . Select ( x => x . FromUtf8Bytes ( ) ) ;
675+ var urnKeys = ids . Map ( t => AsAsync ( ) . UrnKey < T > ( t ) ) ;
676+ if ( urnKeys . Count > 0 )
677+ {
678+ await AsAsync ( ) . RemoveEntryAsync ( urnKeys . ToArray ( ) , token ) . ConfigureAwait ( false ) ;
679+ }
675680 }
676-
677- if ( lastCursor != 0 )
678- await DeleteAllAsync < T > ( lastCursor , pageSize , token ) . ConfigureAwait ( false ) ;
679- else
680- await AsAsync ( ) . RemoveEntryAsync ( new [ ] { typeIdsSetKey } , token ) . ConfigureAwait ( false ) ;
681+ await AsAsync ( ) . RemoveEntryAsync ( new [ ] { typeIdsSetKey } , token ) . ConfigureAwait ( false ) ;
681682 }
682683
683684 ValueTask < List < string > > IRedisClientAsync . SearchSortedSetAsync ( string setId , string start , string end , int ? skip , int ? take , CancellationToken token )
0 commit comments