我有以下代碼:EF4延遲加載 - 如何強制加載?
public IEnumerable<RMAInfo> GetAllRMAsByReseller(string resellerID)
{
using (RMAEntities context = new RMAEntities())
{
IEnumerable<RMAInfo> ret = from r in GetRMAInfos_Internal(context)
where r.ResellerID.ToUpper().Trim() == resellerID
select r;
return ret;
}
}
當我嘗試訪問返回值,我得到的預期的錯誤:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
我知道這是因爲懶加載的發生,這是現在嘗試加載上下文已關閉(通過使用超出範圍)。
我的問題是如何在退出方法之前強制加載?
本來我像
return ret.ToList<RMAInfo>();
這工作得很好,但我不知道,如果是做正確的或最好的方法是什麼?
作爲一種風格問題,我會在'using'塊之前聲明'ret'爲'List',在using語句中使用'ret =(from ...)。ToList()'賦值,然後在上下文處理後返回。這可能沒有什麼區別,但它看起來更清晰,更易於維護。 –