abp

Форк
0
37 строк · 1.3 Кб
1
using MongoDB.Driver;
2
using Volo.Abp.Data;
3
using Volo.Abp.DependencyInjection;
4
using Volo.Abp.MongoDB;
5

6
public class MyProjectNameMongoDbSchemaMigrator : ITransientDependency
7
{
8
    private readonly IServiceProvider _serviceProvider;
9

10
    public MyProjectNameMongoDbSchemaMigrator(IServiceProvider serviceProvider)
11
    {
12
        _serviceProvider = serviceProvider;
13
    }
14

15
    public async Task MigrateAsync()
16
    {
17
        var dbContexts = _serviceProvider.GetServices<IAbpMongoDbContext>();
18
        var connectionStringResolver = _serviceProvider.GetRequiredService<IConnectionStringResolver>();
19

20
        foreach (var dbContext in dbContexts)
21
        {
22
            var connectionString =
23
                await connectionStringResolver.ResolveAsync(
24
                    ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType()));
25
            var mongoUrl = new MongoUrl(connectionString);
26
            var databaseName = mongoUrl.DatabaseName;
27
            var client = new MongoClient(mongoUrl);
28

29
            if (databaseName.IsNullOrWhiteSpace())
30
            {
31
                databaseName = ConnectionStringNameAttribute.GetConnStringName(dbContext.GetType());
32
            }
33

34
            (dbContext as AbpMongoDbContext)?.InitializeCollections(client.GetDatabase(databaseName));
35
        }
36
    }
37
}
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.