2012-04-14 1 views
1

私は大規模なWebアプリケーションの中で、データサービスとしてEntity Frameworkを使用しています.WCFでサービスを提供したいので、WCFでサービスを提供したいです。webおよびwinフォームアプリケーションのWCFサービスからのEntity Frameworkデータへのアクセスにエラーがありますか?

私私は私のコードのデバッグのクライアントは、私は私はこの問題は、このラインから知っている実体モデル

public partial class DepositEntities : ObjectContext 
    { 
     public static DepositEntities Current 
     { 
      get 
      { 
       DepositEntities oc = 
        HttpContext.Current.Items["ObjectContext"] as DepositEntities; 

       if (oc == null) 
       { 
        oc = new DepositEntities(); 
        HttpContext.Current.Items["ObjectContext"] = oc; 
       } 

       return oc; 
      } 
     } 
    } 

をキャッシュするために使用するいくつかのエラーは私のパブリックプロパティから起こっているサービスを取得したい、後

DepositEntities oc = System.Web.HttpContext.Current.Items["ObjectContext"] as DepositEntities; 

ときI私の変更いくつかのことにCurrent財産体それは異なるデータがあると考えているので、この

public static DepositEntities Current 
{ 
    get 
    { 
     DepositEntities oc = new DepositEntities(); 
     return oc; 
    } 
} 

すべてが、私は何の問題

を持っていない。しかし、どこでも、私は私のコードに参加しているサービスからデータを取得するとき、私は問題がOKであるようにsource because of new DepositEntities();

+0

例外が発生するか、データを返さないだけですか? –

+0

親愛なる@LosFrijoles例外**オブジェクト参照はオブジェクトのインスタンスに設定されていません**この行{DepositEntities oc = System.Web.HttpContext.Current.Items ["ObjectContext"]はDepositEntities; WCFを使用するときに私のプロジェクト全体で正しく動作します。このエラーが発生します – WhizDeveloper

+0

'HttpContext'はASP.NET Webアプリケーションのコンテキスト内にのみ存在します。 Windows Formsアプリケーションには 'HttpContext'がありませんので、データをキャッシュするためには使用できません。あなたは' HttpContext'でdepedentではない他のキャッシュ手段をチェックアウトする必要があります。 –

答えて

1

WCFにHttpContext.Currentが含まれていない可能性が最も高いです。 WCFでのコンテキストの詳細を読む - この質問は良いスタートかもしれません:http://social.msdn.microsoft.com/Forums/en/wcf/thread/27896125-b61e-42bd-a1b0-e6da5c23e6fc

また、DIコンテナ(つまり、Castle Windsor)でObjectContextのライフタイムを管理する方が良いと思います。これにより、WCFサービスや単体テストなどの問題である静的プロパティCurrentを公開する必要はありません。

+0

あなたの答えは正しいようですが、私はそれが私のために少し複雑です私の解決策を見つけることができませんでした!問題を解決するためにどのセッションを使うべきですか? – WhizDeveloper

+0

私は自分の道を変えます! WCFを使用する代わりにクライアントでWebサービスを使用します – WhizDeveloper

1

wcf service and ASP.NETの「ASP.NET互換モードでのWCFサービスのホスティング」を参照してください。 wcfサービスで有効なHttpContextを取得する方法について説明します。

関連する問題