在页面呈现之前处理我的DBContext对象是否明智?

时间:2013-04-18 13:25:41

标签: asp.net entity-framework dbcontext

我在我的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)而不用担心在预渲染时对我进行处理。

1 个答案:

答案 0 :(得分:3)

如果您愿意,您当然可以这样做,但是您需要记住一件事:如果您曾经想过引用该对象的子对象/集合,那么您需要在处理上下文之前确保它是水合的。否则,您将收到一个异常,告诉您已经处理了上下文。

有些人会说通过应用程序只有一个上下文,这当然也是一种有效的方法,但我更喜欢你现在正在做的事情。我不喜欢一直打开数据库连接。

相关问题