2015-09-24 7 views
6

jestem uzyskiwanie niektóre dane z bazy danych i przechowywanie tego w zmiennej globalnej, jak pokazano:Konwersja System.Data.Entity.DynamicProxies do (nie proxy) klasy w języku 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(); 
} 

Problem mam jest że kontekst się zamyka i kiedy chcę uzyskać dostęp do niektórych danych przechowywanych w zmiennej globalnej, nie mogę.

Dane jest System.Data.Entity.DynamicProxies.Stuff zamiast Application.Model.Stuff co oznacza, że ​​wtedy ten błąd, gdy próbuję coś zrobić z danymi:

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

moje pytanie w jaki sposób mogę, używając powyższego kodu jako przykładu, przekonwertować/rzutować na typ, który chcę, aby móc wykorzystać dane inne w mojej aplikacji?

Edit: Szybkie grab ekran błędu: enter image description here

+3

Jaka konkretna operacja daje ten błąd? Czy próbujesz uzyskać dostęp do niektórych właściwości, które używają leniwego ładowania? – sstan

+2

możliwy duplikat [Jak rozwiązać błąd Instancja ObjectContext została usunięta i nie można jej już używać do operacji wymagających połączenia] (http://stackoverflow.com/questions/18398356/how-to-solve-the- error-the-objectcontext-instance-has-disposed-and-can-no-l) – sstan

Odpowiedz

0

Roztwór powodu leniwe załadunku po wszystkim.

Musiałem powiedzieć kwerendę, aby pobrać wszystko, aby po zamknięciu kontekstu nadal miałem dostęp do danych. To jest zmiana, którą musiałem wprowadzić:

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(); 
} 
Powiązane problemy