2011-01-13 14 views
0

こんにちは "ObjectContextインスタンスが破棄され、接続が必要な操作に使用できなくなりました"というエラーが表示されます。私はwcfサービスからいくつかのメソッドを実行します。それらのすべては新しいコンテキストオブジェクトを使用し、そのほとんどは問題なく実行されます。しかし、この1つは同様の実装にはいくつかの方法が私のコードで上記の数行成功したが、上記のエラー与え続け:エンティティフレームワークのオブジェクトコンテキストが途中で終了する

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); 
     } 
    } 

私も最初は対から、このエラーを見ましたが、「基になる接続が閉じられました:することが予想された接続を生き続けることはサーバーによって閉鎖されました。だから私はwcfサービスのオブジェクトをシリアライズする問題だと思った。だから私はサービス上でいくつかのトレースを行い、上記のエラーを発見した。それでは、そのエンティティが関連していると考えます。何か案は?

答えて

1

ObjectContextの遅延読み込みを無効にしてください。ほとんどの場合、アプリケーションには、シリアル化中に遅延ロードを引き起こすナビゲーションプロパティが含まれています。

+0

ビンゴ。ありがとうラディスラフ。また私はemのLermanの本を読んでいるので、wcfの操作中にpocoを使って、これらのタイプの問題の多くを排除することをお勧めします。あなたの考えはどうなっているのだろう? –

+0

@dave:はい、WebサービスのPOCOを使用する方法があります。しかし、POCOを使用しても、遅延ロードを使用することができますので、それに注意してください。 –

関連する問題