![](/img/trans.png)
[英]Json.Encode(Model) throws “The ObjectContext instance has been disposed” exception
[英]Table to json error - DbContext has been disposed
由於某種原因,我的DBContext不能正常工作,我在控制器上執行了一個非常簡單的操作,並且出現此錯誤The operation cannot be completed because the DbContext has been disposed.
我的簡單代碼如下(.toList()僅用於調試以確認正在讀取數據,並且我有102個元素的列表。)
public ActionResult gettimeoffsets()
{
using (Dal.DbContext dc = new Dal.DbContext())
{
var times = dc.timeZones;
var timelist = times.ToList();
return Json(times, JsonRequestBehavior.AllowGet);
}
}
這是我的時區模型
[Table("timeZones")]
public class timeZone
{
[Key]
public String Id { get; set; }
public String BaseUtcOffset { get; set; }
public String DisplayName { get; set; }
public Double tzOffset { get; set; }
}
這是因為您在JSON響應中使用了times
,該times
可能是DbSet
或類似的IQueryable
對象。 您需要在執行數據庫查詢的JSON響應中使用timelist
。
您可能啟用了延遲加載和代理生成,並且TimeZone
對象中具有導航屬性。 當序列化程序嘗試加載依賴項時,上下文已經被釋放,這就是為什么您要獲取異常。
嘗試在您的上下文中禁用延遲加載和代理生成。
dc.Configuration.LazyLoadingEnabled=false;
dc.Configuration.ProxyCreationEnabled=false;
編輯:嘗試返回times
而不是timeZones
。 times
是一個IQueryable
,也僅在序列化器嘗試返回它時才對其進行評估,但是到那時,可以進行評估的上下文已經被處理掉了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.