我有實體框架生成以下類: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