我有一个带有自我跟踪实体的大型 n 层 Web 项目。我正在使用 Entity Framework 5 并将对象上下文存储在其中HttpContext.Current.Items
并对其进行处理,如此处Application_EndRequest
所述。我有一个单独的框架类库项目(CMS.Framework),其中包含所有(自我跟踪)POCO 类和更多逻辑。实际的 ASP.NET Web 窗体应用程序是指我的 CMS.Framework 项目。到目前为止,一切正常。
现在,我想创建一个控制台应用程序(用于计划的服务器任务)并使用我的 CMS.Framework 类库。但是,当自跟踪实体尝试初始化(并调用静态CoreContext
属性)时,System.NullReferenceException
会抛出 a,因为HttpContext.Current
它是 null。这对我来说很有意义,因为我们现在在控制台应用程序中。这是我只在控制台应用程序中中断的代码:
/// <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 为空时,我应该在哪里存储?我可以使用任何控制台应用程序上下文吗?对此有什么建议吗?