2017-03-28 3 views
0

을 배치하고있다, 난 내 컨트롤러 매우 간단한 조치를하고 난 The operation cannot be completed because the DbContext has been disposed.표가 JSON 오류로 - DbContext 내 DBContext 그냥 작동하지 않는 몇 가지 이유

내 간단한 코드는 다음과 같다이 오류를 받고 있어요 합니다 (.toList()는 데이터만을 confrim하는 디버그 읽고 난 (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; } 
} 

답변

1

JSON 응답에 times을 사용하고 있습니다. 이는 아마도 DbSet 또는 이와 비슷한 IQueryable 개체 일 것입니다. 데이터베이스 쿼리를 실행 한 JSON 응답에 timelist을 사용해야합니다.

+0

Dbset을 반환 할 수 없었습니다. 감사하지 않았습니다. –

0

Y이고 아마도 지연로드 및 프록시 생성이 활성화되어 있고 TimeZone 객체에는 탐색 속성이 있습니다. serializer가 종속성을로드하려고하면 컨텍스트가 이미 삭제 된 것이므로 예외가 발생합니다.

컨텍스트에서 지연로드 및 프록시 생성을 비활성화하십시오.

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

편집 : times 대신 timeZones의 반환보십시오. timesIQueryable이며, serializer가이를 반환하려고 시도 할 때만 평가되기도하지만 그때까지는 평가가 수행 될 수있는 컨텍스트가 이미 삭제됩니다.

+0

나는 그런 경우는 아니라고 생각합니다. 내 모델을 추가하기 위해 게시물을 편집했습니다. –

+0

이 경우에도 비슷한 문제가 있다고 생각합니다. 나는 당신이 IQueryable을 반환했다는 사실을 놓쳤다. 자세한 내용은 편집을 참조하십시오. –