Как получить DbContext в сервисе ABP?

Как получить DbContext экземпляр на уровне приложения?

Я пытался:

1.

public class SeedingTestDataAppService : MyAppServiceBase
{
    private readonly MyDbContext _ctx;

    public SeedingTestDataAppService
    (
        MyDbContext context // Error
    )
    {
        _ctx = context;
    }
}

2.

public class SeedingTestDataAppService : MyAppServiceBase
{
    private readonly MyDbContext _ctx;

    public SeedingTestDataAppService
    (
        IDbContextProvider<MyDbContext> dbContextProvider
    )
    {
        _ctx = dbContextProvider.GetDbContext();
        // Error: unitOfWork is null
    }
}

Я плохо разбираюсь в ABP. Где и как я могу взять DbContext экземпляр и внедрить его?


person Goliath2019    schedule 03.09.2019    source источник


Ответы (1)


Не вызывайте dbContextProvider.GetDbContext() в конструкторе.

Реализуйте _ctx как получатель и используйте его там, где вам действительно нужен контекст.

public class SeedingTestDataAppService : MyAppServiceBase
{
    private MyDbContext _ctx => _dbContextProvider.GetDbContext();
    private readonly IDbContextProvider<MyDbContext> _dbContextProvider;

    public SeedingTestDataAppService(IDbContextProvider<MyDbContext> dbContextProvider)
    {
        _dbContextProvider = dbContextProvider;
    }
}
person aaron    schedule 03.09.2019