diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs index 0b32d54d45..d1bf2aa754 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs @@ -85,6 +85,12 @@ namespace Volo.Abp.Domain.Repositories public abstract Task DeleteAsync(Expression> predicate, bool autoSave = false, CancellationToken cancellationToken = default); + public virtual Task DeleteManyAsync( + Expression> predicate, + bool autoSave = false, + CancellationToken cancellationToken = default) + => DeleteAsync(predicate, autoSave, cancellationToken); + protected virtual TQueryable ApplyDataFilters(TQueryable query) where TQueryable : IQueryable { diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs index 055c9c2de9..d673ff2c28 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs @@ -289,10 +289,7 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore .Where(predicate) .ToListAsync(GetCancellationToken(cancellationToken)); - foreach (var entity in entities) - { - dbSet.Remove(entity); - } + await DeleteManyAsync(entities, autoSave, cancellationToken); if (autoSave) { diff --git a/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs index 8ab6753de3..bb7d64bcc1 100644 --- a/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs +++ b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs @@ -184,19 +184,6 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb return (await GetQueryableAsync()).Where(predicate).SingleOrDefault(); } - public override async Task DeleteAsync( - Expression> predicate, - bool autoSave = false, - CancellationToken cancellationToken = default) - { - var entities = (await GetQueryableAsync()).Where(predicate).ToList(); - - foreach (var entity in entities) - { - await DeleteAsync(entity, autoSave, cancellationToken); - } - } - public override async Task InsertAsync( TEntity entity, bool autoSave = false, @@ -251,6 +238,16 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb } } + public override async Task DeleteAsync( + Expression> predicate, + bool autoSave = false, + CancellationToken cancellationToken = default) + { + var entities = (await GetQueryableAsync()).Where(predicate).ToList(); + + await DeleteManyAsync(entities, autoSave, cancellationToken); + } + public override async Task> GetListAsync(bool includeDetails = false, CancellationToken cancellationToken = default) { return (await GetQueryableAsync()).ToList(); diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs index 1495249802..efdd0a8991 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs @@ -463,10 +463,7 @@ namespace Volo.Abp.Domain.Repositories.MongoDB .Where(predicate) .ToListAsync(cancellationToken); - foreach (var entity in entities) - { - await DeleteAsync(entity, autoSave, cancellationToken); - } + await DeleteManyAsync(entities, autoSave, cancellationToken); } [Obsolete("Use GetQueryableAsync method.")]