为了账号安全,请及时绑定邮箱和手机立即绑定

如何在方法期间使用依赖注入从池中获取 DbContext 的实例?

如何在方法期间使用依赖注入从池中获取 DbContext 的实例?

C#
潇潇雨雨 2023-04-29 09:52:02
我想在使用范围期间在池中的函数中使用 DbContext我已经尝试将 IServiceProvider 添加到工厂并让工厂解析上下文并将其放入 UoW 但随后它告诉我在其他线程中使用了相同的包含。services.AddDbContextPool<EmployeeContext>(options => options.UseSqlServer(connection));...using (var unitOfWork = factory.CreateUnitOfWork()){}我想在使用依赖注入的 DbContextPool 的函数内创建一个工作单元范围。
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

您可以在您的方法中创建一个范围,但首先您必须将 IServiceScopeFactory 注入您的类。


using Microsoft.Extensions.DependencyInjection;



public class SomeService

{

    private readonly IServiceScopeFactory _serviceScopeFactory;


    public SomeService(IServiceScopeFactory serviceScopeFactory)

    {

        _serviceScopeFactory = serviceScopeFactory;

    }


    public Task DoStuff()

    {

        using (var serviceScope = _serviceScopeFactory.CreateScope())

        {

            var unitOfWork =  serviceScope.ServiceProvider.GetRequiredService<UnitOfWork>();

        }

    }

}

请记住,您创建的对象将在您释放作用域时被释放。另外,如果你不处理范围,你会得到内存泄漏


查看完整回答
反对 回复 2023-04-29
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信