我遇到了一个异常:ObjectContext实例已被处理并且不再能用于需要连接的操作,即使我已经使用Include方法。
这里是函数的使用方法:
这里是检索实体的函数:
public List<Entity.CapacityGrid> SelectByFormula(string strFormula, int iVersionId)
{
// declaration
List<Entity.CapacityGrid> oList;
// retrieve ingredients
oList = (from Grid in _Dc.CapacityGrid.Include("EquipmentSection")
join Header in _Dc.CapacityHeader
on Grid.HeaderId equals Header.HeaderId
where Header.Formula == strFormula
&& Header.VersionId == iVersionId
select Grid).ToList();
// return
return oList;
这里是函数的使用方法:
// retrieve ingredient quantity by equipement
using (Model.CapacityGrid oModel = new Model.CapacityGrid(Configuration.RemoteDatabase))
oQuantity = oModel.SelectByFormula(strFormulaName, iVersionId);
// code to throw the exception
var o = (oQuantity[0].EquipmentSection.TypeId);
我知道使用using会关闭连接。我认为ToList()方法会在关闭连接之前实例化包含的对象及其相关对象。
有人能指出我错在哪里吗? 抱歉,我的问题没表述清楚。我明白将抛出异常的代码放在using语句块中是有效的,但我不明白为什么include语句不起作用?
谢谢!
ToList
前加上.Include
,像这样:.Include(g => g.Equipmentsection).ToList()
- DavidGInclude
扩展方法所在的位置。 - gretro