自己追跡エンティティを含む大規模な 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の場合、どこに保存しますか? 使用できるコンソール アプリケーション コンテキストはありますか? これに関するヒントはありますか?