2013-04-26 87 views
0

我有以下方法:实体框架错误:ObjectContext的实例已配置

public void InsertOrUpdate(AmazonProduct amazonProduct) 
    { 
     var product = context.AmazonProducts 
         .Include(x => x.AmazonLowestOfferListings) 
         .Include(x => x.AmazonMyPrices) 
         .Include(x => x.AmazonProductCompetitivePrices) 
         .FirstOrDefault(p => p.ASIN == amazonProduct.ASIN); 

     if (product == null) 
     { 
      // New entity 
      context.AmazonProducts.Add(amazonProduct); 
     } 
     else 
     { 
      foreach (var lineItem in amazonProduct.AmazonLowestOfferListings) 
      { 
       context.AmazonLowestOfferListings.Add(lineItem); 
      } 

      context.Entry(product).CurrentValues.SetValues(amazonProduct); 
     } 
    } 

但是就行了,

foreach (var lineItem in amazonProduct.AmazonLowestOfferListings) 

它给我的错误:

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

我没有得到它..我还没有把它添加到上下文中,它仍然给我这个错误?任何人有任何想法?

感谢 尼尔

+0

您是否在传递给该方法的'amazonProduct'中包含'AmazonLowestOfferListings'? EF可能试图延迟加载该集合,该集合需要在此上下文中处理的连接。 – Drewman 2013-04-26 10:46:35

+0

我不能,因为AmazonProduct仅仅是一个对象。如果你知道我的意思,我还没有将它添加到上下文中? – 2013-04-26 10:49:18

+0

amazonProduct参数的值来自哪里?它的上下文可能已经被处置,因此你不能枚举它的AmazonLowestOfferListings – Netricity 2013-04-26 10:49:24

回答

1

是否包含在amazonProduct传递给方法AmazonLowestOfferListings

EF可能试图延迟加载该集合,该集合需要在此上下文中处置的连接。