使用池时重置DbContext时会调用什么?

时间:2018-11-20 02:51:38

标签: entity-framework-core ef-core-2.0

DbContext中是否有某种方法或钩子可以知道何时通过上下文池对其进行重置?我想缓存一些状态并清除它。 release notes指出了这一点:

  

如果在派生的DbContext类中维护自己的状态(例如,私有字段),则不应使用DbContext池,不应在请求之间共享该状态。 EF Core只会在将DbContext实例添加到池中之前重置知道的状态。

如何使EF Core知道数据?

1 个答案:

答案 0 :(得分:0)

在仔细阅读了Entity Framework Code之后,这就是神奇的调味料。

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

    services.AddScoped<ServiceContract, ServiceImplementation>()
            .AddScoped<IResettableService>(sp => sp.GetRequiredService<ServiceContract>());