Вы используете внедрение зависимостей, чтобы получить экземпляр вашего WebDbContext
через конструктор. ASP.NET Core делает это, инициируя для вас объект WebDbContext
и вставляя его в вызов конструктора, когда он создает экземпляр вашего класса репозитория.
Но этот WebDbContext
объект доступен только на время существования текущего HTTP-запроса. После завершения HTTP-запроса ASP.NET Core избавляется от него. Вот почему вы видите, что он расположен.
Обновление: Я вижу, что вы делаете. Проблема здесь:
return _WebDbContext.Article.Include(s => s.Details);
Это не кеширует данные. Это кэширует запрос (IQueryable
). Запрос не будет выполнен, пока вы не перечислите это (цикл через него). Это упоминается как "ленивая загрузка". Таким образом, ваш GetArticles
фактически выполняет запрос каждый раз, когда он вызывается.
При первом использовании (в том же HTTP-запросе, который вы его кэшировали), это работает Но когда вы используете его во второй раз, контекст удаляется, и запрос не может быть выполнен.
Вам нужно заставить его выполнить запрос сразу же. Самый простой способ - позвонить ToList()
:
return _WebDbContext.Article.Include(s => s.Details).ToList();
Вам также потребуется изменить тип свойства на IEnumerable
.