diff --git a/src/MongoFramework/MongoDbConnection.cs b/src/MongoFramework/MongoDbConnection.cs index f97440b5..03f94288 100644 --- a/src/MongoFramework/MongoDbConnection.cs +++ b/src/MongoFramework/MongoDbConnection.cs @@ -10,6 +10,8 @@ public class MongoDbConnection : IMongoDbConnection public MongoUrl Url { get; protected set; } private bool IsDisposed { get; set; } + private Action ConfigureSettings { get; init; } + private IMongoClient InternalClient; public IMongoClient Client { @@ -23,6 +25,7 @@ public IMongoClient Client if (InternalClient == null) { var settings = MongoClientSettings.FromUrl(Url); + ConfigureSettings?.Invoke(settings); settings.LinqProvider = MongoDB.Driver.Linq.LinqProvider.V2; InternalClient = new MongoClient(settings); } @@ -33,20 +36,20 @@ public IMongoClient Client public IDiagnosticListener DiagnosticListener { get; set; } = new NoOpDiagnosticListener(); - public static MongoDbConnection FromUrl(MongoUrl mongoUrl) + public static MongoDbConnection FromUrl(MongoUrl mongoUrl) => FromUrl(mongoUrl, configureSettings: null); + public static MongoDbConnection FromUrl(MongoUrl mongoUrl, Action configureSettings) { Check.NotNull(mongoUrl, nameof(mongoUrl)); return new MongoDbConnection { - Url = mongoUrl + Url = mongoUrl, + ConfigureSettings = configureSettings }; } - public static MongoDbConnection FromConnectionString(string connectionString) - { - return FromUrl(new MongoUrl(connectionString)); - } + public static MongoDbConnection FromConnectionString(string connectionString) => FromConnectionString(connectionString, configureSettings: null); + public static MongoDbConnection FromConnectionString(string connectionString, Action configureSettings) => FromUrl(new MongoUrl(connectionString), configureSettings); public IMongoDatabase GetDatabase() {