代码之家  ›  专栏  ›  技术社区  ›  Daniel A. White

使用池时重置dbcontext时调用什么?

  •  0
  • Daniel A. White  · 技术社区  · 7 年前

    有什么方法或钩子 DbContext 要知道何时通过上下文池重置它?我想缓存一些状态并清除它。这个 release notes 请说明:

    如果在派生的dbcontext类中维护自己的状态(例如,私有字段),而这些状态不应在请求之间共享,请避免使用dbcontext池。ef core将只重置在将dbcontext实例添加到池之前知道的状态。

    如何让ef core知道数据?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Daniel A. White    7 年前

    好吧,在深入研究实体框架代码之后,这里是神奇的调味品。

    • 创建一个实现 IResettableService
    • 我对锁做了一些魔术,以确保它的状态保持一致。
    • 向注册 IServiceCollection :

      services.AddScoped<ServiceContract, ServiceImplementation>()
              .AddScoped<IResettableService>(sp => sp.GetRequiredService<ServiceContract>());
      
    推荐文章