我的页面调用使用通用存储库“查找”方法的服务层方法。在服务层方法中,我执行以下操作:
using (IUnitOfWork unitOfWork = new DBContext())
{
GenericRepository<Operator> operatorRepos = new GenericRepository<Operator>(unitOfWork);
{
try
{
var oper = operatorRepos.Find(o => o.OperatorID == operatorID).Include(o => o.cmn_Address).Single();
return oper;
}
catch (InvalidOperationException exc)
{
//handle exception
}
}
}
我的存储库的 Find 方法:
public IQueryable<T> Find(Func<T, bool> predicate)
{
return _objectSet.Where<T>(predicate).AsQueryable();
}
在页面上,我尝试访问 Operator 的 cmn_address 导航属性,但出现以下错误:
ObjectContext 实例已被释放,不能再用于需要连接的操作。
我意识到这是由处理上下文的 using 语句引起的,但我认为 Include 方法会急切加载 cmn_Address 对象。我不明白为什么这不能按我的预期工作。