2017-11-03 8 views
0

データベースからのデータを使用してASP.NET MVC APIを作成します。これを行うにはLINQを使用します。私は文脈を作り、deleteが偽であるすべての関税を得る。私はデバッグObjectContextインスタンスがLINQを使用して削除されていて、JSON結果を取得できません。

[HttpGet] 
public JsonResult Index() 
{ 
    List<Tariff> temp = new List<Tariff>(); 
    using (Context context = new Context()) 
    { 
     temp = context.Tariff.Where(t => !t.Delete).ToList<Tariff>(); 
    } 
    return Json(temp, JsonRequestBehavior.AllowGet); 
} 

、一時はSystem.Data.Entity.DynamicProxies.Tariff_...代わりのMyNamespace.Models.Tariffのリストが含まれています。私が続けると、この例外が表示されます:

ObjectContextインスタンスは廃棄され、接続が必要な操作には使用できなくなります。

私は間違っていますか?

+4

おそらくレイジーローディングが有効になっており、関連するコレクションのタイプが「タリフ」であり、シリアル化中に列挙されている可能性があります。 'Context'インスタンスが破棄された後にシリアライゼーションが発生すると、例外がスローされます – Igor

+0

@Igor:どうすれば無効にできますか? –

+3

'DbContext.Configuration.LazyLoadingEnabled = false;' – Igor

答えて

1

Disbale DBコンテキストの遅延ロード:

context.Configuration.LazyLoadingEnabled = false; 

あなたはこのクエリのためにそれを行う必要がある場合。

public DbContext() : base("name=DbContext", "DbContext") 
{ 
    this.Configuration.LazyLoadingEnabled = false; 
    OnContextCreated(); 
} 
関連する問題