我有实体框架生成以下类:LINQ到实体延迟加载
public partial class Branch
{
public short Id { get; set; }
public short CompanyId { get; set; }
public string Code { get; set; }
public string Title { get; set; }
public virtual Company Ts_Companies { get; set; }
}
我有以下的方法,这需要所有分支出来的数据库:
public Branch[] LoadBranches(int companyId, int page, int limit, string search, string sort, string sortOrder)
{
using (var dbContext = new TimeShedulerEntities())
{
var _branches = (from ct in dbContext.Branches
where ct.Title.Contains(search) || ct.Code.Contains(search)
select ct).OrderBy(c => c.Title).Skip((page - 1) * limit).Take(limit);
return _branches.ToArray();
}
}
在我模型设计器我看到Lazy Loading
设置为true,但是当我遍历分支时,属性Ts_Companies为null。此外,我得到以下异常:
型“System.ObjectDisposedException”的异常出现在 EntityFramework.dll但在用户代码中没有处理
附加信息:ObjectContext的实例已布置 和不能再用于需要连接的操作。
我忘了什么吗?
您的地方,这种情况下的参考范围以外的情况下实体正在使用“使用”范围之外的分支,因此它已被处置。 – Jasen
它告诉你错误信息中的错误。背景已经处理完毕。要么在你完成查询之前不要处理上下文,要么不要懒惰地加载你需要的信息。 – Servy
@Servy我同意你的意思,但不应该'返回_branches.ToArray()'强制执行查询?这发生在使用语句的范围内,所以我真的不知道他可以在哪里访问处理的数据库上下文。 – evanmcdonnal