Операция не может быть завершена, так как 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, и это определенная причина за неприятности.