diff --git a/DigitalData.Core.Abstraction.Application/Repository/IRepository.cs b/DigitalData.Core.Abstraction.Application/Repository/IRepository.cs index cd51800..6c57a44 100644 --- a/DigitalData.Core.Abstraction.Application/Repository/IRepository.cs +++ b/DigitalData.Core.Abstraction.Application/Repository/IRepository.cs @@ -16,5 +16,9 @@ public interface IRepository public Task UpdateAsync(TDto dto, Expression> expression, CancellationToken cancellation = default); + public Task UpdateAsync(TDto dto, IQueryable query, CancellationToken cancellation = default); + public Task DeleteAsync(Expression> expression, CancellationToken cancellation = default); + + public Task DeleteAsync(IQueryable query, CancellationToken cancellation = default); } diff --git a/DigitalData.Core.Infrastructure/DbRepository.cs b/DigitalData.Core.Infrastructure/DbRepository.cs index 031b2ed..66362bb 100644 --- a/DigitalData.Core.Infrastructure/DbRepository.cs +++ b/DigitalData.Core.Infrastructure/DbRepository.cs @@ -37,9 +37,11 @@ public class DbRepository : IRepository where TDbC public IQueryable ReadOnly() => Entities.AsNoTracking(); - public virtual async Task UpdateAsync(TDto dto, Expression> expression, CancellationToken ct = default) + public virtual Task UpdateAsync(TDto dto, Expression> expression, CancellationToken ct = default) => UpdateAsync(dto, Entities.Where(expression), ct); + + public virtual async Task UpdateAsync(TDto dto, IQueryable query, CancellationToken ct = default) { - var entities = await Entities.Where(expression).ToListAsync(ct); + var entities = await query.ToListAsync(ct); for (int i = entities.Count - 1; i >= 0; i--) { @@ -50,9 +52,11 @@ public class DbRepository : IRepository where TDbC await Context.SaveChangesAsync(ct); } - public virtual async Task DeleteAsync(Expression> expression, CancellationToken ct = default) + public virtual Task DeleteAsync(Expression> expression, CancellationToken ct = default) => DeleteAsync(Entities.Where(expression), ct); + + public virtual async Task DeleteAsync(IQueryable query, CancellationToken ct = default) { - var entities = await Entities.Where(expression).ToListAsync(ct); + var entities = await query.ToListAsync(ct); for (int i = entities.Count - 1; i >= 0; i--) {