2015-07-17 4 views
2

Я использую asp.net mvc5 с EF, в этой строке, которую я получил «Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения». Что не так?ASP.NET MVC5: экземпляр ObjectContext удален

public JsonResult GetResponibleParty() 
{ 
    List<CI_ResponsibleParty> resParty; 
    using (MetabaseDbContext context = new MetabaseDbContext()) 
    { 
     resParty = context.SetOfResponsibleParty.ToList(); 
     return Json(resParty, JsonRequestBehavior.AllowGet); 
    }  
} 
+0

вы можете показать, что 'CI_ResponsibleParty' содержит? Может быть, у него есть некоторые refferences, которые не загружаются с 'ToList()', но им нужно после. Так что лучше создать 'ResponsiblePartyViewModel', у которого есть только те свойства, которые вам нужны, это решительно решит вашу проблему. –

+0

Где отображается эта ошибка? Не могли бы вы показать весь класс? – Kamo

+0

teo van kot: да, вы правы. Проблема была в процессе LazyLoading. – Andrey

ответ

0

Решение найдено. В этом случае мне помогло 2 метода:

1) context.Configuration.LazyLoadingEnabled = false; 
2) or using .Include() 
+0

Решение этой проблемы - вернуть модели представления вместо моделей Entity Framework. –

+0

Но в этом методе контроллера мне нужно вернуть Json – Andrey

+0

Что вам в конечном итоге нужно сделать, так это вернуть простой объект, на который вы можете сопоставить свою модель EF и вернуть ее вместо вашей модели EF. Этот объект часто называют View Model или DTO (Data Transfer Object). Вы никогда не хотите либо принимать, либо возвращать объекты модели базы данных в действия вашего контроллера. –

1

Переместить оператор возврата после использования блока. Вы уже создали список и сохранили его в переменной.

public JsonResult GetResponibleParty() 
{ 
    List<CI_ResponsibleParty> resParty; 
    using (MetabaseDbContext context = new MetabaseDbContext()) 
    { 
     resParty = context.SetOfResponsibleParty.ToList(); 
    }  
    return Json(resParty, JsonRequestBehavior.AllowGet); 
} 
+0

Я не думаю, что это проблема. – Kamo

+0

Thx, но это не работает =) – Andrey

Смежные вопросы