System.ObjectDisposedException当我不等几秒钟

时间:2013-12-31 16:23:59

标签: c# sqlite entity-framework-5

我有一个返回实体列表的存储库。代码如下:

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。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以在EF的配置中禁用延迟加载,或执行必要的JOIN语句以确保所有数据都被急切加载。

ContextOptions.LazyLoadingEnabled = false;