1

自己追跡エンティティを含む大規模な n 層 Web プロジェクトがあります。私は Entity Framework 5 を使用しHttpContext.Current.Itemsており、ここでApplication_EndRequest説明されているように、オブジェクト コンテキストを に格納して破棄します。フレームワーク (CMS.Framework) 用に別のクラス ライブラリ プロジェクトがあり、これにはすべての (自己追跡) POCO クラスとさらに多くのロジックが含まれています。実際の ASP.NET Web フォーム アプリケーションは、私の CMS.Framework プロジェクトを参照しています。これまでのところ、すべて正常に動作しています。

ここで、(スケジュールされたサーバー タスク用の) コンソール アプリケーションを作成し、CMS.Framework クラス ライブラリも使用したいと考えています。ただし、自己追跡エンティティが初期化を試みる (そして静的CoreContextプロパティを呼び出す) と、nullSystem.NullReferenceExceptionと同様に a がスローされます。HttpContext.Current私たちは現在コンソールアプリを使用しているので、これは理にかなっています。コンソールアプリでのみ壊れる私のコードは次のとおりです。

    /// <summary>
    /// Gets the CmsCoreContext in order to access the CMS_Core DB. This context
    /// will be disposed when the application onloads (EndRequest).
    /// </summary>
    protected static CmsCoreContext CoreContext
    {
        get
        {
            if (!HttpContext.Current.Items.Contains("CoreContext"))
            {
                // Set Entity Framework context here and reuse it throughout the application
                HttpContext.Current.Items.Add("CoreContext", new CmsCoreContext());
            }
            return HttpContext.Current.Items["CoreContext"] as CmsCoreContext;
        }
    }

new CmsCoreContext()HttpContext.Current が nullの場合、どこに保存しますか? 使用できるコンソール アプリケーション コンテキストはありますか? これに関するヒントはありますか?

4

1 に答える 1