2012-02-08 51 views
1

我想我正面临一个我可以解决的架构问题:我正在开发一个使用实体框架代码(v4.3 beta1)的Web应用程序。 另外,还有几个发布的Web服务。在asp.net应用程序中存储DbContext的位置?

在单独的类库中,我有DbContext和al,实体。该库由Web应用程序引用,显而易见。

在 “数据” 库中,我有一个静态属性持有德方面:

namespace MMOrpheus.Lib 
{ 
    public class Context 
    { 
     public static MMOrpheusDB MMO 
     { 
      get 
      { 
       if (HttpContext.Current != null && HttpContext.Current.Session["MMOEntities"] == null) 
       { 
        HttpContext.Current.Session["MMOEntities"] = new MMOrpheusDB(); 
       } 
       return HttpContext.Current.Session["MMOEntities"] as MMOrpheusDB; 
      } 
      set 
      { 
       if (HttpContext.Current != null) 
        HttpContext.Current.Session["MMOEntities"] = value; 
      } 
     } 
    } 
} 

MMOrpheusDB从继承的DbContext。

所以问题是我不知道这是不对的。除此之外,我不认为这个Context类应该使用System.Web!

关于如何组织这个项目的任何建议?

回答

2

您的问题的答案不是一个简单的问题。

所有我建议首先,您使用控制框架(StructureMap,团结,...)的依赖注入&反转。

如果你要存储您的的DbContext,使用IOC将做起来很简单。您可以定义您的上下文生命周期。我通常与PerRequest一起去。 每个Web请求的DbContext的一个实例。 DBContext以请求开始并以它结束。

但是没有必要采用这种模式。你可以简单地开始上下文当你需要它和处置它后使用它。

如果你喜欢第一种方法,搜索领域驱动设计,国际奥委会,单位工作,库模式&等

+0

感谢阿夫欣GH,你给了很多阅读有关 – 2012-02-08 11:48:38

相关问题