我认为我面临着一个我可以解决的架构问题:
我正在使用实体框架代码开发一个Web应用程序(v4.3 beta1)。 此外,还发布了一些Web服务。
在一个单独的类库中,我有DbContext和al,实体。 Web库很好地引用了这个库。
在“数据”库中,我有一个静态属性来保存de context:
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!
有关如何组织此项目的任何建议?
答案 0 :(得分:2)
您的问题的答案并不简单。
首先我建议你使用依赖注入&控制反转框架(StructureMap,Unity,...)。
如果您要存储 DbContext ,使用 IOC 会让它变得如此简单。您可以定义上下文的生存期。我通常会使用 PerRequest 一生。 每个Web请求的一个DbContext实例。 DBContext以请求开头并以它结束。
但是没有必要采用这种模式。 当你完成开始 上下文时使用后需要它并处理。
如果您更喜欢第一种方法,请搜索域驱动设计,IOC,工作单元,存储库模式&等