Операция не может быть завершена, так как DbContext был удален. nopcommerce

Я получаю DbContext has been disposed error когда я пытаюсь получить данные из базы данных, используя приведенный ниже код, который упоминается.

Как решить эту проблему?

public class ExampleService<T> where T : Example
{
   protected readonly IRepository<T> _exampleRepository;

   public ExampleService()
   {
     _exampleRepository= EngineContext.Current.Resolve<IRepository<T>>();
   }

   public IList<T> GetService()
   {
     var query = _exampleRepository.Table;
     return query.ToList();
   }
} 

2 ответа

Проблема в том, что некоторые части объекта должны быть утилизированы, пока он еще используется.

Старайтесь всегда разрешать сервис следующим образом:

protected readonly IRepository<T> _exampleRepository;

к

var _exampleRepository = EngineContext.Current.Resolve<IRepository<T>>();

Надеюсь это поможет!

Я думаю, что в вашем образце недостаточно кода. Он должен прекрасно работать, если вы получаете ExampleService из области зависимостей.

Поэтому мой ответ таков: используйте внедрение зависимости в вашем конструкторе вместо использования ResourceLocator. Если вместо этого вы объявляете зависимости в конструкторе и у вас по-прежнему есть проблемы, например, при получении экземпляра IRepository, то вы можете быть уверены, что создаете экземпляр ExampleService неправильным образом, вне области действия autofac, и это определенная причина за неприятности.

Другие вопросы по тегам