diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs index bb35883f7c..d32f015a33 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/AbpMongoDbModule.cs @@ -1,8 +1,5 @@ -using System; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; -using MongoDB.Driver; -using Volo.Abp.Data; using Volo.Abp.Domain; using Volo.Abp.Domain.Repositories.MongoDB; using Volo.Abp.Modularity; @@ -36,31 +33,5 @@ namespace Volo.Abp.MongoDB typeof(MongoDbRepositoryFilterer<,>) ); } - - public override void OnApplicationInitialization(ApplicationInitializationContext context) - { - InitializeAllCollections(context.ServiceProvider); - } - - private void InitializeAllCollections(IServiceProvider serviceProvider) - { - var dbContexts = serviceProvider.GetServices(); - var connectionStringResolver = serviceProvider.GetService(); - - foreach (var dbContext in dbContexts) - { - var connectionString = connectionStringResolver.Resolve(ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); - var mongoUrl = new MongoUrl(connectionString); - var databaseName = mongoUrl.DatabaseName; - var client = new MongoClient(mongoUrl); - - if (databaseName.IsNullOrWhiteSpace()) - { - databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); - } - - (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName)); - } - } } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs new file mode 100644 index 0000000000..6b74376030 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs @@ -0,0 +1,45 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using MongoDB.Driver; +using MyCompanyName.MyProjectName.Data; +using Volo.Abp.Data; +using Volo.Abp.MongoDB; + +namespace MyCompanyName.MyProjectName.MongoDB +{ + public class MongoDbMyProjectNameDbSchemaMigrator : IMyProjectNameDbSchemaMigrator + { + private readonly IServiceProvider _serviceProvider; + + public MongoDbMyProjectNameDbSchemaMigrator(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public Task MigrateAsync() + { + var dbContexts = _serviceProvider.GetServices(); + var connectionStringResolver = _serviceProvider.GetService(); + + foreach (var dbContext in dbContexts) + { + var connectionString = + connectionStringResolver.Resolve( + ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType())); + var mongoUrl = new MongoUrl(connectionString); + var databaseName = mongoUrl.DatabaseName; + var client = new MongoClient(mongoUrl); + + if (databaseName.IsNullOrWhiteSpace()) + { + databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()); + } + + (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName)); + } + + return Task.CompletedTask; + } + } +}