代码之家  ›  专栏  ›  技术社区  ›  Abhijeet

获取asp.net样板库使用的DbContext实例

  •  1
  • Abhijeet  · 技术社区  · 6 年前

    我开始了一个新的项目使用Aspnet锅炉板,但不再想使用存储库和吨隐藏的工程做幕后。

    因此,我们期待着获得由 Abp存储库框架和

    1. 直接使用Ef core LINQ查询。
    2. 抽象事务。

    请问我该如何获取那个实例?

    1 回复  |  直到 6 年前
        1
  •  9
  •   koryakinp    5 年前
    1. 直接使用Ef core LINQ查询。

    你可以得到一个 DbContext 使用 GetDbContext() IDbContextProvider

    private readonly YourDbContext _ctx;
    
    public YourService(IDbContextProvider<YourDbContext> dbContextProvider)
    {
        _ctx = dbContextProvider.GetDbContext();
    }
    

    您可以通过应用 [UnitOfWork(IsDisabled = true)]

    Here 是一篇关于使用ASP.NET样板文件进行事务管理的相关文章。

        2
  •  0
  •   Andrew Hodgkinson    5 年前

    unitOfWork Postinitialize 模块的方法:

    public override void PostInitialize()
    {
        // The hypothetical 'SweeperClass' in this example uses constructor
        // injection to obtain a IDbContextProvider instance and from there
        // get hold of a DbContext.
        //
        // As written, this code threw a null argument exception.
    
        var sweeperClass = IocManager.Resolve<SweeperClass>();
        // ...do stuff...
    }
    

    在本例中,幸运的是,这只是一个同时解析一个工作单元来包装另一个对象的构造的问题。

    using Abp.Domain.Uow;
    
    public override void PostInitialize()
    {
        using (IocManager.Resolve<IUnitOfWorkManager>().Begin())
        {
            var sweeperClass = IocManager.Resolve<SweeperClass>();
            // ...do stuff...
        }
    }
    

    所以@koryakinp的回答给了我大部分的解决方案,我只需要上面的调整就可以让我的特定用例运行起来。