2017-03-28 16 views
0

が配置されている、私は私のコントローラ上の非常に単純なアクションを持っていると私はThe operation cannot be completed because the DbContext has been disposed.表は、JSONのエラーに - DbContextは私DBContextだけで動作していない何らかの理由で

私の単純なコードは次の通りである。このエラーを取得しています(.toListは()データのみが読み取られていると私は102個の要素のリストを持っているconfrimするデバッグ用です。)

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; } 
} 

答えて

1

これは、おそらくDbSetまたはそれに類するIQueryableオブジェクトであるtimesをJSONレスポンスで使用しているためです。データベースクエリを実行したJSONレスポンスにtimelistを使用する必要があります。

+0

私はDbsetが返されなかったことはありませんでした、ありがとう –

0

Yです遅延ロードとプロキシ生成が有効になっており、TimeZoneオブジェクトにナビゲーションプロパティが設定されている可能性があります。シリアライザが依存関係をロードしようとすると、コンテキストがすでに破棄されているため、例外が発生します。

あなたのコンテキストで遅延ロードとプロキシ生成を無効にしてみてください。

dc.Configuration.LazyLoadingEnabled=false; 
dc.Configuration.ProxyCreationEnabled=false; 

EDIT: timesの代わりtimeZonesを戻してください。 timesIQueryableであり、シリアライザがそれを返そうとしたときにのみ評価されますが、その時点までに評価が行われるコンテキストはすでに破棄されています。

+0

私のモデルを追加するために投稿を編集しました –

+0

この場合も同様の問題があると思います。私はあなたがIQueryableを返すという事実を忘れました、それについては残念です。詳細については、編集を参照してください。 –

関連する問題