1

我在我的 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),而不必担心在预渲染时为我完成的处理。

4

1 回答 1

3

如果您愿意,您当然可以这样做,但您需要记住一件事:如果您在任何时候想要从该对象引用子对象/集合,您需要确保它是在处理上下文之前补充水分。否则,您将收到一个异常,告诉您上下文已被释放。

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

于 2013-04-18T13:35:24.267 回答