2011-01-13 8 views
0

Hallo Ich erhalte den Fehler "ObjectContext-Instanz wurde entsorgt und kann nicht mehr für Operationen verwendet werden, die eine Verbindung erfordern". Wenn ich ein paar Methoden von einem WCF-Dienst ausführen. Alle von ihnen verwenden ein neues Kontextobjekt und die meisten von ihnen laufen ohne Problem. Allerdings hält diese über den Fehler geben, obwohl mehrere Methoden mit ähnlichen Implementierungen erfolgreich mehrere Zeilen weiter oben in meinem Code:Entity Framework Objektkontext endet vorzeitig

public CustomAuthentication.WebService.Application GetApplicationByUrl(string url) 
     { 
      try 
      { 
       using (AuthenticationEntities2 auth = new AuthenticationEntities2()) 
       { 
        Application app = auth.Applications.Where(a => a.Url.Contains(url)).FirstOrDefault(); 

       return app; 
      } 
     } 
     catch (Exception ex) 
     { 
      throw new FaultException(ex.Message + "\r\n" + ex.StackTrace + "\r\n" + ex.InnerException); 
     } 
    } 

ich sah auch zunächst um diesen Fehler von vs „Die zugrunde liegende Verbindung wurde geschlossen: Eine Verbindung, die erwartet wurde lebendig gehalten werden, wurde vom Server geschlossen. " Also dachte ich, es wäre ein Problem, Objekte in meinem WCF-Dienst zu serialisieren. Also habe ich etwas auf dem Dienst verfolgt und den obigen Fehler entdeckt. So glaube jetzt, dass seine Entität verwandt ist. Irgendwelche Ideen?

Antwort

1

Versuchen Sie, das Lazy-Laden Ihres ObjectContext zu deaktivieren. Höchstwahrscheinlich enthält Ihre Anwendung Navigationseigenschaften, die während der Serialisierung ein verzögertes Laden auslösen.

+0

Bingo. Danke Ladislav. Ich lese auch Lerman's Buch über em und sie empfiehlt nur Poco's während der wcf Operationen zu verwenden, um viele dieser Arten von Problemen zu beseitigen. Ich frage mich, was sind deine Gedanken dazu? –

+0

@dave: Ja, mit POCOs in Web-Services ist der Weg zu gehen. Aber selbst mit POCOs können Sie immer noch Lazy Loading verwenden, seien Sie sich dessen bewusst. –