mirror of https://github.com/abpframework/abp.git
2 changed files with 46 additions and 30 deletions
@ -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<IAbpMongoDbContext>(); |
||||
|
var connectionStringResolver = _serviceProvider.GetService<IConnectionStringResolver>(); |
||||
|
|
||||
|
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; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue