Browse Source

Update Repository DeleteAsync and DeleteManyAsync methods

* Add RepositoryBase.DeleteManyAsync(predicate)
* Call DeleteManyAsync(predicate) in concrete DeleteAsync(predicate) implementations when possible
Requires this PR for tests to pass: https://github.com/abpframework/abp/pull/7542
pull/7543/head
Oliver Cooper 6 years ago
parent
commit
6c0ee78d14
  1. 6
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs
  2. 5
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
  3. 23
      framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs
  4. 5
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs

6
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<Func<TEntity, bool>> predicate, bool autoSave = false, CancellationToken cancellationToken = default);
public virtual Task DeleteManyAsync(
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,
CancellationToken cancellationToken = default)
=> DeleteAsync(predicate, autoSave, cancellationToken);
protected virtual TQueryable ApplyDataFilters<TQueryable>(TQueryable query)
where TQueryable : IQueryable<TEntity>
{

5
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)
{

23
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<Func<TEntity, bool>> 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<TEntity> InsertAsync(
TEntity entity,
bool autoSave = false,
@ -251,6 +238,16 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
}
}
public override async Task DeleteAsync(
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,
CancellationToken cancellationToken = default)
{
var entities = (await GetQueryableAsync()).Where(predicate).ToList();
await DeleteManyAsync(entities, autoSave, cancellationToken);
}
public override async Task<List<TEntity>> GetListAsync(bool includeDetails = false, CancellationToken cancellationToken = default)
{
return (await GetQueryableAsync()).ToList();

5
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.")]

Loading…
Cancel
Save