Что вызывается при сбросе DbContext при использовании пула? - PullRequest
0 голосов
/ 20 ноября 2018

Есть ли какой-нибудь метод или хук в DbContext, чтобы узнать, когда он сбрасывается через пул контекста?Я бы хотел кешировать состояние и очистить его.В примечаниях к выпуску указано следующее:

Избегайте использования пула DbContext, если вы поддерживаете свое собственное состояние (например, частные поля) в производном классе DbContext, который не должен использоваться в разных запросах,EF Core будет сбрасывать только то состояние, о котором известно, до добавления экземпляра DbContext в пул.

Как я могу сделать EF Core осведомленным о данных?

1 Ответ

0 голосов
/ 20 ноября 2018

Хорошо, после рытья в Entity Framework Code, вот волшебный соус.

  • Создайте класс, который реализует IResettableService
  • Я сделал некоторую магию с блокировкой, чтобысостояние остается неизменным.
  • Зарегистрируйтесь с помощью IServiceCollection:

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