From 055e33cb50cd7d5bedb9012d584f40392308bd01 Mon Sep 17 00:00:00 2001 From: PM Extra Date: Mon, 1 Mar 2021 10:10:32 +0800 Subject: [PATCH] Improve MongoDbCoreRepositoryExtensions As same as #5697, and fix a bug. --- .../MongoDbCoreRepositoryExtensions.cs | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDbCoreRepositoryExtensions.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDbCoreRepositoryExtensions.cs index bcbdc00d9e..0f74592391 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDbCoreRepositoryExtensions.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDbCoreRepositoryExtensions.cs @@ -11,60 +11,56 @@ namespace Volo.Abp.Domain.Repositories public static class MongoDbCoreRepositoryExtensions { [Obsolete("Use GetDatabaseAsync method.")] - public static IMongoDatabase GetDatabase(this IBasicRepository repository) - where TEntity : class, IEntity + public static IMongoDatabase GetDatabase(this IBasicRepository repository) + where TEntity : class, IEntity { return repository.ToMongoDbRepository().Database; } - public static Task GetDatabaseAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) - where TEntity : class, IEntity + public static Task GetDatabaseAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetDatabaseAsync(cancellationToken); } [Obsolete("Use GetCollectionAsync method.")] - public static IMongoCollection GetCollection(this IBasicRepository repository) - where TEntity : class, IEntity + public static IMongoCollection GetCollection(this IBasicRepository repository) + where TEntity : class, IEntity { return repository.ToMongoDbRepository().Collection; } - public static Task> GetCollectionAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) - where TEntity : class, IEntity + public static Task> GetCollectionAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetCollectionAsync(cancellationToken); } [Obsolete("Use GetMongoQueryableAsync method.")] - public static IMongoQueryable GetMongoQueryable(this IBasicRepository repository) - where TEntity : class, IEntity + public static IMongoQueryable GetMongoQueryable(this IBasicRepository repository) + where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetMongoQueryable(); } - public static Task> GetMongoQueryableAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) - where TEntity : class, IEntity + public static Task> GetMongoQueryableAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetMongoQueryableAsync(cancellationToken); } - public static Task> GetAggregateAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) - where TEntity : class, IEntity + public static async Task> GetAggregateAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + where TEntity : class, IEntity { - return repository.ToMongoDbRepository().GetAggregateAsync(cancellationToken); + var collection = await repository.ToMongoDbRepository().GetCollectionAsync(cancellationToken); + return collection.Aggregate(); } - public static IMongoDbRepository ToMongoDbRepository(this IBasicRepository repository) - where TEntity : class, IEntity + public static IMongoDbRepository ToMongoDbRepository(this IBasicRepository repository) + where TEntity : class, IEntity { - var mongoDbRepository = repository as IMongoDbRepository; - if (mongoDbRepository == null) - { - throw new ArgumentException("Given repository does not implement " + typeof(IMongoDbRepository).AssemblyQualifiedName, nameof(repository)); - } - - return mongoDbRepository; + if (repository is IMongoDbRepository mongoDbRepository) return mongoDbRepository; + throw new ArgumentException("Given repository does not implement " + typeof(IMongoDbRepository).AssemblyQualifiedName, nameof(repository)); } } }