/// <summary> /// Use the KickStart extension to configure MongoDB. /// </summary> /// <param name="configurationBuilder">The configuration builder.</param> /// <returns> /// A fluent <see langword="interface"/> to configure KickStart. /// </returns> public static IConfigurationBuilder UseMongoDB(this IConfigurationBuilder configurationBuilder) { var options = new MongoOptions(); var starter = new MongoStarter(options); var builder = new MongoBuilder(options); configurationBuilder.ExcludeName("MongoDB"); configurationBuilder.Use(starter); return(configurationBuilder); }
/// <summary> /// Use the KickStart extension to configure MongoDB. /// </summary> /// <param name="configurationBuilder">The configuration builder.</param> /// <returns> /// A fluent <see langword="interface"/> to configure KickStart. /// </returns> public static IConfigurationBuilder UseMongoDB(this IConfigurationBuilder configurationBuilder) { var options = new MongoOptions(); var starter = new MongoStarter(options); var builder = new MongoBuilder(options); configurationBuilder.ExcludeAssemblyFor <MongoStarter>(); configurationBuilder.ExcludeAssemblyFor <global::MongoDB.Driver.IMongoDatabase>(); configurationBuilder.Use(starter); return(configurationBuilder); }
/// <summary> /// Connect the project to a mongo database. /// </summary> /// <param name="builder">Builder for creating an Impartner service.</param> /// <param name="configureMongo">Additional configuration for Mongo.</param> public static IImpartnerBuilder AddMongo(this IImpartnerBuilder builder, Action <IMongoBuilder> configureMongo = null) { var mongoBuilder = new MongoBuilder(); var camelCaseBsonConvention = new ConventionPack { new CamelCaseElementNameConvention() }; builder.ServiceCollection.Configure <MongoDbSettings> ( builder.Configuration.GetSection(nameof(MongoDbSettings)) ); builder.ServiceCollection.Configure <MongoMigrationSettings> ( builder.Configuration.GetSection(nameof(MongoDbSettings)) ); builder.ServiceCollection.AddScoped <IMongoRepository, MongoRepository> ( provider => { var(httpProvider, mongoSettings) = ( provider.GetRequiredService <IHttpContextAccessor>(), provider.GetRequiredService <IOptions <MongoDbSettings> >().Value ); var client = new MongoClient(mongoSettings.ConnectionString); return(new MongoRepository(client, httpProvider, mongoSettings)); } ); if (builder.ServiceCollection.All(value => value.ServiceType != typeof(IHttpContextAccessor))) { builder.ServiceCollection.AddHttpContextAccessor(); } mongoBuilder.AddConvention(nameof(camelCaseBsonConvention), camelCaseBsonConvention); builder.ServiceCollection.AddMigration(); configureMongo?.Invoke(mongoBuilder); return(builder); }