From 055e33cb50cd7d5bedb9012d584f40392308bd01 Mon Sep 17 00:00:00 2001 From: PM Extra Date: Mon, 1 Mar 2021 10:10:32 +0800 Subject: [PATCH 1/4] 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)); } } } From 020bffaa90d99c0929d5050ecc03c424e2dbcccc Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 1 Mar 2021 10:21:22 +0800 Subject: [PATCH 2/4] Update MongoDbCoreRepositoryExtensions.cs --- .../Domain/Repositories/MongoDbCoreRepositoryExtensions.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 0f74592391..3d27de6df6 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 @@ -59,7 +59,10 @@ namespace Volo.Abp.Domain.Repositories public static IMongoDbRepository ToMongoDbRepository(this IBasicRepository repository) where TEntity : class, IEntity { - if (repository is IMongoDbRepository mongoDbRepository) return mongoDbRepository; + if (repository is IMongoDbRepository mongoDbRepository) + { + return mongoDbRepository; + } throw new ArgumentException("Given repository does not implement " + typeof(IMongoDbRepository).AssemblyQualifiedName, nameof(repository)); } } From 17239580d9926664172affece543e1530437b374 Mon Sep 17 00:00:00 2001 From: PM Extra Date: Mon, 1 Mar 2021 16:30:32 +0800 Subject: [PATCH 3/4] Rollback GetAggregateAsync --- .../Domain/Repositories/MongoDbCoreRepositoryExtensions.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 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 3d27de6df6..f3ca43b80e 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 @@ -49,11 +49,10 @@ namespace Volo.Abp.Domain.Repositories return repository.ToMongoDbRepository().GetMongoQueryableAsync(cancellationToken); } - public static async Task> GetAggregateAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + public static Task> GetAggregateAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) where TEntity : class, IEntity { - var collection = await repository.ToMongoDbRepository().GetCollectionAsync(cancellationToken); - return collection.Aggregate(); + return repository.ToMongoDbRepository().GetAggregateAsync(cancellationToken); } public static IMongoDbRepository ToMongoDbRepository(this IBasicRepository repository) From 149755af7170321f9fbf7ca00fa020097ff8a613 Mon Sep 17 00:00:00 2001 From: PM Extra Date: Mon, 1 Mar 2021 16:37:08 +0800 Subject: [PATCH 4/4] Replace IBasicRepository with IReadOnlyBasicRepository. --- .../MongoDbCoreRepositoryExtensions.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 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 f3ca43b80e..27e031fe58 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,51 +11,51 @@ namespace Volo.Abp.Domain.Repositories public static class MongoDbCoreRepositoryExtensions { [Obsolete("Use GetDatabaseAsync method.")] - public static IMongoDatabase GetDatabase(this IBasicRepository repository) + public static IMongoDatabase GetDatabase(this IReadOnlyBasicRepository repository) where TEntity : class, IEntity { return repository.ToMongoDbRepository().Database; } - public static Task GetDatabaseAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + public static Task GetDatabaseAsync(this IReadOnlyBasicRepository repository, CancellationToken cancellationToken = default) where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetDatabaseAsync(cancellationToken); } [Obsolete("Use GetCollectionAsync method.")] - public static IMongoCollection GetCollection(this IBasicRepository repository) + public static IMongoCollection GetCollection(this IReadOnlyBasicRepository repository) where TEntity : class, IEntity { return repository.ToMongoDbRepository().Collection; } - public static Task> GetCollectionAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + public static Task> GetCollectionAsync(this IReadOnlyBasicRepository repository, CancellationToken cancellationToken = default) where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetCollectionAsync(cancellationToken); } [Obsolete("Use GetMongoQueryableAsync method.")] - public static IMongoQueryable GetMongoQueryable(this IBasicRepository repository) + public static IMongoQueryable GetMongoQueryable(this IReadOnlyBasicRepository repository) where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetMongoQueryable(); } - public static Task> GetMongoQueryableAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + public static Task> GetMongoQueryableAsync(this IReadOnlyBasicRepository repository, CancellationToken cancellationToken = default) where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetMongoQueryableAsync(cancellationToken); } - public static Task> GetAggregateAsync(this IBasicRepository repository, CancellationToken cancellationToken = default) + public static Task> GetAggregateAsync(this IReadOnlyBasicRepository repository, CancellationToken cancellationToken = default) where TEntity : class, IEntity { return repository.ToMongoDbRepository().GetAggregateAsync(cancellationToken); } - public static IMongoDbRepository ToMongoDbRepository(this IBasicRepository repository) + public static IMongoDbRepository ToMongoDbRepository(this IReadOnlyBasicRepository repository) where TEntity : class, IEntity { if (repository is IMongoDbRepository mongoDbRepository)