asp.net应用程序中的DbContext存储位置?
我想我正面临一个可以解决的架构问题: 我正在开发一个web应用程序,首先使用实体框架代码(v4.3 beta1)。 此外,还发布了一些web服务 在一个单独的类库中,我有DbContext和al,即实体。很明显,web应用程序引用了该库 在“数据”库中,我有一个用于保存de上下文的静态属性:asp.net应用程序中的DbContext存储位置?,asp.net,entity-framework,code-first,software-design,Asp.net,Entity Framework,Code First,Software Design,我想我正面临一个可以解决的架构问题: 我正在开发一个web应用程序,首先使用实体框架代码(v4.3 beta1)。 此外,还发布了一些web服务 在一个单独的类库中,我有DbContext和al,即实体。很明显,web应用程序引用了该库 在“数据”库中,我有一个用于保存de上下文的静态属性: namespace MMOrpheus.Lib { public class Context { public static MMOrpheusDB MMO
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继承
所以问题是我觉得这是不对的。除此之外,我认为这个上下文类不应该使用System.Web
关于如何组织这个项目有什么建议吗?你的问题的答案并不简单
首先,我建议您使用依赖注入和控制反转框架(StructureMap,Unity,…)
如果要存储DbContext,使用IOC将非常简单。您可以定义上下文的生存期。我通常会用一生的时间。每个web请求有一个DbContext实例。DBContext以请求开始,以请求结束
但是没有必要使用这种模式。您只需在需要时启动您的上下文并在使用后处置它即可
如果您喜欢第一种方法,请搜索域驱动设计、IOC、工作单元、存储库模式等