0

私のオブジェクトeventTypeListは、使用中であってもコンテキストから外れます。何かアドバイス?

エラーメッセージ:ObjectContextインスタンスは破棄され、接続を必要とする操作には使用できなくなりました。

public ActionResult GetEventTypeList()
{
    List<EventType> eventTypeList;
    using (var db = new ICTTBEntities())
    {
        eventTypeList = (from et in db.EventTypes select et).ToList();
        var result = new { Result = "OK", Records = eventTypeList };

        return Json(result, JsonRequestBehavior.AllowGet);
    }
}
4

2 に答える 2

0

問題は、熱心にロードされるのではなく、遅延ロードされている1つ以上のリレーションである可能性があります。良いニュースは、コンテキストがすでに接続を管理しているusingため、aのステートメントがDbContext不要であり、Disposeの必要性がほとんどないことです(http://stephenwalther.com/archive/2008/08/20/asp-netを参照)。 -mvc-tip-34-dispose-of-your-datacontext-or-don-t.aspx)。または、コンテキストのロードオプションを設定することで、所有しているリレーションが熱心にロードされるようにすることもできます。

注:IoCを使用してコンテキストを直接作成するのではなく注入する場合は、DIフレームワークがコンテキストのクリーンアップを処理するため、問題を完全に回避できます。

于 2013-03-24T18:45:36.840 に答える
0

遅延読み込みを無効に設定します:

[...]
using (var db = new ICTTBEntities())
    {
         db.Configuration.LazyLoadingEnabled = false;
         [...]
    }

詳細については、http://msdn.microsoft.com/en-us/library/bb896272.aspxを参照してください。

于 2013-08-21T10:16:11.457 に答える