From a1a0f99bdbd14ec17e9075bde2c9955ffecbff2d Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 16 Dec 2020 12:33:48 +0300 Subject: [PATCH] Implementation of IMongoDbBulkOperationProvider into repository --- .../MongoDB/IMongoDbBulkOperationProvider.cs | 4 ++-- .../Repositories/MongoDB/MongoDbRepository.cs | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbBulkOperationProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbBulkOperationProvider.cs index a4751839da..367a70bb86 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbBulkOperationProvider.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/IMongoDbBulkOperationProvider.cs @@ -17,7 +17,7 @@ namespace Volo.Abp.MongoDB.Volo.Abp.Domain.Repositories.MongoDB where TEntity : class, IEntity; - Task UpdateManyAsync( + Task UpdateManyAsync( IMongoDbRepository repository, IEnumerable entities, bool autoSave, @@ -26,7 +26,7 @@ namespace Volo.Abp.MongoDB.Volo.Abp.Domain.Repositories.MongoDB where TEntity : class, IEntity; - Task DeleteManyAsync( + Task DeleteManyAsync( IMongoDbRepository repository, IEnumerable entities, bool autoSave, diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs index 308b7d98ed..938899d2c2 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs @@ -16,6 +16,7 @@ using Volo.Abp.EventBus.Distributed; using Volo.Abp.EventBus.Local; using Volo.Abp.Guids; using Volo.Abp.MongoDB; +using Volo.Abp.MongoDB.Volo.Abp.Domain.Repositories.MongoDB; namespace Volo.Abp.Domain.Repositories.MongoDB { @@ -46,6 +47,8 @@ namespace Volo.Abp.Domain.Repositories.MongoDB public IAuditPropertySetter AuditPropertySetter { get; set; } + public IMongoDbBulkOperationProvider BulkOperationProvider { get; set; } + public MongoDbRepository(IMongoDbContextProvider dbContextProvider) { DbContextProvider = dbContextProvider; @@ -89,6 +92,12 @@ namespace Volo.Abp.Domain.Repositories.MongoDB await ApplyAbpConceptsForAddedEntityAsync(entity); } + if (BulkOperationProvider != null) + { + await BulkOperationProvider.InsertManyAsync(this, entities, autoSave, cancellationToken); + return; + } + if (SessionHandle != null) { await Collection.InsertManyAsync( @@ -177,6 +186,12 @@ namespace Volo.Abp.Domain.Repositories.MongoDB SetNewConcurrencyStamp(entity); } + if (BulkOperationProvider != null) + { + await BulkOperationProvider.UpdateManyAsync(this, entities, autoSave, cancellationToken); + return; + } + var entitiesCount = entities.Count(); BulkWriteResult result; @@ -277,6 +292,12 @@ namespace Volo.Abp.Domain.Repositories.MongoDB var oldConcurrencyStamp = SetNewConcurrencyStamp(entity); } + if (BulkOperationProvider != null) + { + await BulkOperationProvider.DeleteManyAsync(this, entities, autoSave, cancellationToken); + return; + } + var entitiesCount = entities.Count(); if (typeof(ISoftDelete).IsAssignableFrom(typeof(TEntity)))