2015-09-24 6 views
6

я получаю некоторые данные из базы данных и хранящее это в глобальном переменном, как показано ниже:Преобразование System.Data.Entity.DynamicProxies в (Non прокси) класса в C#

//Global Variable 
public static List<stuff> Stuff; 

using (var context = new StuffContext()) 
{ 
    stuff = new List<stuff>(); 
    stuff = (from r in context.Stuff 
       select r).ToList(); 
} 

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

Данные о System.Data.Entity.DynamicProxies.Stuff вместо Application.Model.Stuff это означает, я получаю эту ошибку, когда я пытаюсь сделать что-то с данными:

"The ObjectContext instance has been disposed and can no longer be used for operations that require a connection." 

Мой вопрос как я могу, используя приведенный выше код в качестве примера, преобразовать/применить к типу, который я хочу, чтобы я мог использовать данные, где в моем приложении?

Edit: Быстрый захват экрана ошибки: enter image description here

+3

Какая конкретная операция дает вам эту ошибку? Вы пытаетесь получить доступ к некоторому свойству, которое использует ленивую загрузку? – sstan

+2

Возможный дубликат [Как решить ошибку Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения] (http://stackoverflow.com/questions/18398356/how-to-solve-the- ошибка-The-ObjectContext-экземпляр-имеет-был-расположен-и-может-не-л) – sstan

ответ

0

Решение было связано с отложенной загрузки в конце концов.

Я должен был сказать запрос, чтобы захватить все, чтобы при закрытии контекста у меня все еще был доступ к данным. Это изменение, которое я должен был внести:

public static List<stuff> Stuff; 

using (var context = new StuffContext()) 
{ 
    stuff = new List<stuff>(); 
    stuff = (from r in context.Stuff 
      .Include(s => s.MoreStuff).Include(s => s.EvenMoreStuff) 
      select r).ToList(); 
}