public static void UseMongoDb <TContext>(this EntityContextOptionsBuilder <TContext> builder, string connectionString, string database, EventQueueType eventQueueType = EventQueueType.InMemory) where TContext : EntityContext { RegisterConventions(MongoDB.Bson.GuidRepresentation.Standard); var options = new MongoEntityContextOptions <TContext> { ConnectionString = connectionString, DatabaseName = database, }; builder.Builder .Services .AddSingleton(options) .AddTransient <IDatabaseTransactionManager <TContext>, MongoDatabaseTransactionManager <TContext> >() .AddScoped <IDatabaseCollectionProvider <TContext>, MongoDatabaseCollectionProvider <TContext> >() .AddScoped <MongoDatabaseFactory <TContext> >() .AddSingleton <MongoClientFactory <TContext> >() .AddEventQueue <TContext>(eventQueueType); }
public MongoClientFactory(MongoEntityContextOptions <TContext> options) { _options = options ?? throw new ArgumentNullException(nameof(options)); _mongoClient = new MongoClient(new MongoUrl(_options.ConnectionString)); }