首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linq System.ObjectDisposedException

linq System.ObjectDisposedException
EN

Stack Overflow用户
提问于 2010-07-05 20:35:30
回答 1查看 2.2K关注 0票数 0

我在linq数据库中检索到的一些数据有问题。当我试图访问数据时,我获得了以下例外: System.ObjectDisposedException : ObjectContext的地位被删除,并且不可能再次用于需要连接的操作。这是代码:

代码语言:javascript
复制
using (ProvaDbEntities DBEntities =     
    new ProvaDbEntities(Utilities.ToEntitiesConnectionString()))

            {
                ObjectQuery<site> sites = DBEntities.site;

                IEnumerable<site> q = from site in sites

                                      select site;


                {
                    ObjectQuery<auction> auctions = DBEntities.auction;

                    IEnumerable<auction> q1 = from auction in auctions

                                              where auction.site == this.Name

                                              select auction;

                    IEnumerable<IAuction> res = q1.Cast<IAuction>();

                    return res;

            }
        }
        catch(Exception e)
        {
            throw new UnavailableDbException("[GetAuctions]" + e.Message);
        }

有人能帮我吗?法比奥坦克

EN

回答 1

Stack Overflow用户

发布于 2010-07-05 20:39:38

是的--您正在返回一个将被延迟计算的结果--但是您正在处理用于获取结果的数据上下文。

选项:

  • 急切地加载结果,例如通过调用结果上的ToList
  • 不处理上下文(我不知道实体框架中的情况如何;您可以在LINQ中解决这个问题,但是在EF)
  • 处理完数据

后,这可能不是一个好主意

在这种情况下,我建议使用第一个选项-它将是安全和简单的。由于您已经在过滤结果,并且无论如何都要转换为IEnumerable<IAuction>,所以您不太可能在早期实现查询时遇到正常的缺点。(如果仍然是IQueryable<T>,您将放弃向查询添加额外位的能力,并且它们仍然被转换为SQL。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3182015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档