簡體   English   中英

表轉json錯誤-DbContext已處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM