Browse Source

Make MongoClientSettings configurable

pull/9774/head
liangshiwei 5 years ago
parent
commit
1218306f03
  1. 10
      framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbContextOptions.cs
  2. 10
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/UnitOfWorkMongoDbContextProvider.cs

10
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<Type, Type> DbContextReplacements { get; }
public Action<MongoClientSettings> MongoClientSettingsConfigurer { get; set; }
public AbpMongoDbContextOptions()
{
DbContextReplacements = new Dictionary<Type, Type>();
}
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
}
}
}
}
}

10
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<AbpMongoDbContextOptions> 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);

Loading…
Cancel
Save