From 1218306f03f73ba938a52e88cac041a1bcef9917 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 9 Aug 2021 14:27:25 +0800 Subject: [PATCH] Make MongoClientSettings configurable --- .../Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs | 10 +++++++--- .../Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs | 10 ++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs index aaee9571cd..0cd282ec68 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; +using MongoDB.Driver; namespace Volo.Abp.MongoDB { @@ -7,11 +9,13 @@ namespace Volo.Abp.MongoDB { internal Dictionary DbContextReplacements { get; } + public Action MongoClientSettingsConfigurer { get; set; } + public AbpMongoDbContextOptions() { DbContextReplacements = new Dictionary(); } - + internal Type GetReplacedTypeOrSelf(Type dbContextType) { var replacementType = dbContextType; @@ -26,7 +30,7 @@ namespace Volo.Abp.MongoDB dbContextType.AssemblyQualifiedName ); } - + replacementType = foundType; } else @@ -36,4 +40,4 @@ namespace Volo.Abp.MongoDB } } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs index 2a3842441f..3e1c450ab6 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs @@ -29,7 +29,7 @@ namespace Volo.Abp.Uow.MongoDB IUnitOfWorkManager unitOfWorkManager, IConnectionStringResolver connectionStringResolver, ICancellationTokenProvider cancellationTokenProvider, - ICurrentTenant currentTenant, + ICurrentTenant currentTenant, IOptions options) { _unitOfWorkManager = unitOfWorkManager; @@ -124,7 +124,10 @@ namespace Volo.Abp.Uow.MongoDB private TMongoDbContext CreateDbContext(IUnitOfWork unitOfWork, MongoUrl mongoUrl, string databaseName) { - var client = new MongoClient(mongoUrl); + var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl); + _options.MongoClientSettingsConfigurer?.Invoke(mongoClientSettings); + + var client = new MongoClient(mongoClientSettings); var database = client.GetDatabase(databaseName); if (unitOfWork.Options.IsTransactional) @@ -144,6 +147,9 @@ namespace Volo.Abp.Uow.MongoDB string databaseName, CancellationToken cancellationToken = default) { + var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl); + _options.MongoClientSettingsConfigurer?.Invoke(mongoClientSettings); + var client = new MongoClient(mongoUrl); var database = client.GetDatabase(databaseName);