我在我的asp.net网站项目中使用DBContext进行扩展。我通常做的是我有一个dbcontext的实例可供页面类使用,我在页面加载时实例化它并在整个代码中使用它,但我并没有处理它。我是否明智地使用页面上的Pre_Render事件来处理dbcontext(我会假设它在那时被使用了?)
感谢您的任何提示。
解
所以我最后为我的Dotnetnuke模块编写了一个小扩展类,为我处理我的dbcontext,似乎运行良好,但到目前为止我只在几个模块中推出了它。
public class ModuleExt : PortalModuleBase
{
private BPEntities _ent;
public BPEntities ent
{
get{
if (_ent == null)
{
_ent = new BPEntities();
}
return _ent;
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
ent.Dispose();
}
}
这将使我能够继续使用ent对象(我的DBContext)而不用担心在预渲染时对我进行处理。
答案 0 :(得分:3)
如果您愿意,您当然可以这样做,但是您需要记住一件事:如果您曾经想过引用该对象的子对象/集合,那么您需要在处理上下文之前确保它是水合的。否则,您将收到一个异常,告诉您已经处理了上下文。
有些人会说通过应用程序只有一个上下文,这当然也是一种有效的方法,但我更喜欢你现在正在做的事情。我不喜欢一直打开数据库连接。