diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryAsyncExtensions.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryAsyncExtensions.cs index 87f119016d..8688a34384 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryAsyncExtensions.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryAsyncExtensions.cs @@ -26,6 +26,14 @@ namespace Volo.Abp.Domain.Repositories #region Any/All + public static async Task AnyAsync( + [NotNull] this IReadOnlyRepository repository, + CancellationToken cancellationToken = default) + where T : class, IEntity + { + var queryable = await repository.GetQueryableAsync(); + return await repository.AsyncExecuter.AnyAsync(queryable, cancellationToken); + } public static async Task AnyAsync( [NotNull] this IReadOnlyRepository repository, [NotNull] Expression> predicate, diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs index 2a0400c578..ded3c5e1cd 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs @@ -23,6 +23,11 @@ namespace Volo.Abp.EntityFrameworkCore return queryable.ContainsAsync(item, cancellationToken); } + public Task AnyAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AnyAsync(cancellationToken); + } + public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) { return queryable.AnyAsync(predicate, cancellationToken); diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs index 52c5edd1d3..9e404ac863 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs @@ -29,6 +29,11 @@ namespace Volo.Abp.MongoDB return Task.FromResult(GetMongoQueryable(queryable).Contains(item)); } + public Task AnyAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AnyAsync(cancellationToken); + } + public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) { return GetMongoQueryable(queryable).AnyAsync(predicate, cancellationToken); diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs index b7ac83dc5f..f4fd10718d 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs @@ -30,6 +30,14 @@ namespace Volo.Abp.Linq : Task.FromResult(queryable.Contains(item)); } + public Task AnyAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AnyAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Any()); + } + public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) { var provider = FindProvider(queryable); diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs index 7273754b77..d585122733 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs @@ -21,6 +21,10 @@ namespace Volo.Abp.Linq #region Any/All + Task AnyAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + Task AnyAsync( [NotNull] IQueryable queryable, [NotNull] Expression> predicate, diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs index ce62ea738c..bb0ce7f950 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs @@ -23,6 +23,10 @@ namespace Volo.Abp.Linq #region Any/All + Task AnyAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + Task AnyAsync( [NotNull] IQueryable queryable, [NotNull] Expression> predicate,