我的服务类(在 ASP.NET MVC 应用程序中)中的当前检索模式类似于:
public Client Get(int id)
{
using (var repo = _repoFactory.Get<Client>())
{
return repo.Get(id);
}
}
Where_repoFactory.Get<T>()
返回一个存储库,该存储库在处置时也会处置实体框架DbContext
;
但是,当Get(int id)
方法的使用者需要在Client
对象上使用导航属性时,会抛出异常,因为上下文已经被释放。
我可以预见几种方法来解决这个问题:
- 不要在服务之外使用导航属性
- 不要使用延迟加载导航属性
- 在请求完成时找到其他方式来处理上下文
什么是“正确”(或最不正确)的方式,如何实现?