我有一个返回实体列表的存储库。代码如下:
public List<MainEntities> getAllEntitiesOfType()
{
try
{
using (catalogoEntitiesSQLiteEF5 miDBContext = new catalogoEntitiesSQLiteEF5())
{
miDBContext.RelatedEntities.SqlQuery("Select * from RelatedEntities").ToList<RelatedEntities>();
miDBContext.MainEntities.SqlQuery("Select * from MainEntities where IDMainEntity IN(" + convertIDToString(miDBContext.RelatedEntities.Select(v => v.IDMainEntity).ToList<long>()) + ")").ToList<MainEntities>();
return miDBContext.MainEntities.Local.ToList<MainEntites>();
}
}
catch
{
throw;
}
}
返回的列表在主应用程序中用于填充用作dataGrid的itemSource的列表。
但是,我得到异常System.ObjectDisposedException。
如果我在返回存储库的方法时使用断点并等待几秒钟,我不会收到此错误,但是如果我没有设置此断点,那么我会得到异常。
似乎与没有连接的实体有关系,因为我关闭了dataContext,但我不太清楚。
我在.net 4.0应用程序中使用带有EF5的SQLite。
感谢。
答案 0 :(得分:2)
您可以在EF的配置中禁用延迟加载,或执行必要的JOIN
语句以确保所有数据都被急切加载。
ContextOptions.LazyLoadingEnabled = false;