当我尝试使用下面提到的代码从数据库获取数据时,我得到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();
}
}
答案 0 :(得分:1)
问题是对象的某些部分应该在处理时使用。
尝试始终以这种方式解析服务:
protected readonly IRepository<T> _exampleRepository;
要
var _exampleRepository = EngineContext.Current.Resolve<IRepository<T>>();
希望这有帮助!
答案 1 :(得分:1)
我认为您的示例中没有足够的代码。如果您从依赖范围获取ExampleService,它应该可以正常工作。
所以我的答案是这样的:在构造函数中使用依赖注入,而不是使用ResourceLocator。如果您在构造函数中声明依赖项而仍然存在问题,例如,没有接收到IRepository的实例,那么您可以确保在autofac范围之外以错误的方式实例化ExampleService,这是一个肯定会有麻烦。