/// <summary>
        /// Adds the mongo migrations to the service collection.
        /// </summary>
        /// <param name="services">The services.</param>
        /// <param name="configurationDelegate">The configuration delegate.</param>
        public static IServiceCollection AddMongoMigrations(this IServiceCollection services, Action <MongoMigrationConfiguration> configurationDelegate = null)
        {
            var configuration = new MongoMigrationConfiguration();

            configurationDelegate?.Invoke(configuration);

            services.AddSingleton(configuration);

            services.AddTransient <IMigrationTarget, MigrationTarget>();
            services.AddTransient <IMigrationRunner, MigrationRunner>();
            services.AddTransient <IMigrationLocator, MigrationLocator>();
            services.AddTransient <IDatabaseMigrationStatus, DatabaseMigrationStatus>();
            return(services);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MigrationLocator" /> class.
 /// </summary>
 /// <param name="configuration">The configuration.</param>
 public MigrationLocator(MongoMigrationConfiguration configuration)
 {
     _migrationFilters.Add(new ExcludeExperimentalMigrationsFilter());
     _assemblies.AddRange(configuration.Assemblies);
     _migrationFilters.AddRange(configuration.MigrationFilters);
 }