我在使用linq从db中检索到的一些数据存在问题。 当我尝试访问数据时,我获得以下异常: System.ObjectDisposedException:已删除ObjectContext的istance,并且无法再次将其用于需要连接的操作。 这是代码:
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);
}
有人可以帮帮我吗???
坦克
法比奥
答案 0 :(得分:2)
是的 - 您将返回一个懒惰评估的结果 - 但您正在处理将用于获取结果的数据上下文。
选项:
ToList
在这种情况下,我建议使用第一个选项 - 它将是安全和简单的。由于您已经将结果和过滤到了IEnumerable<IAuction>
,因此您不太可能在早期获得实现查询的正常缺点。 (如果它仍然是IQueryable<T>
,那么你将丢弃为查询添加额外位的能力,它们仍然会被转换为SQL。)