|
|
|
@ -1,13 +1,8 @@ |
|
|
|
using System; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using MongoDB.Driver; |
|
|
|
using Volo.Abp.Data; |
|
|
|
using Volo.Abp.Modularity; |
|
|
|
using Volo.Abp.MongoDB; |
|
|
|
using Volo.Abp.Uow; |
|
|
|
using Volo.Abp.PermissionManagement.MongoDB; |
|
|
|
using Volo.Abp.Threading; |
|
|
|
using Volo.Abp.Uow; |
|
|
|
|
|
|
|
namespace Volo.Abp.Identity.MongoDB |
|
|
|
{ |
|
|
|
@ -29,32 +24,11 @@ namespace Volo.Abp.Identity.MongoDB |
|
|
|
{ |
|
|
|
options.ConnectionStrings.Default = connectionString; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public override void OnPreApplicationInitialization(ApplicationInitializationContext context) |
|
|
|
{ |
|
|
|
InitializeCollections(context); |
|
|
|
} |
|
|
|
|
|
|
|
private static void InitializeCollections(ApplicationInitializationContext context) |
|
|
|
{ |
|
|
|
var dbContexts = context.ServiceProvider.GetServices<IAbpMongoDbContext>(); |
|
|
|
var connectionStringResolver = context.ServiceProvider.GetRequiredService<IConnectionStringResolver>(); |
|
|
|
|
|
|
|
foreach (var dbContext in dbContexts) |
|
|
|
Configure<AbpUnitOfWorkDefaultOptions>(options => |
|
|
|
{ |
|
|
|
var connectionString = AsyncHelper.RunSync(()=> connectionStringResolver.ResolveAsync(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)); |
|
|
|
} |
|
|
|
options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|