在呈现页面/控件中的Dispose之后访问的DataContext
本文关键字:Dispose 之后 访问 DataContext 控件 | 更新日期: 2023-09-27 18:29:57
我随机收到"Dispose后访问DataContext"错误,但仅在aspx和ascx页面/控件上。是否有一条一般规则,即我不应该在使用数据上下文的页面上内联调用方法?
我假设在页面渲染和调用方法时,数据上下文已经被处理了?
例如,在default.aspx 上
<%= CurrentContent.GetText("Intro") %>
CurrentContent实际上是default.aspx中引用的数据库对象。cs
假设您像这样使用
using (MyDbContext ctx = new MyDbContext())
{
return from r in ctx.Table select r;
}
延迟执行就是发生在你身上的事情。该查询不会立即执行,并且只有在最终使用返回的枚举器时才运行——在本例中,这是在using块处理完上下文之后。如果你想确保这种情况不会发生,请将查询模式更改为
using (MyDbContext ctx = new MyDbContext())
{
return (from r in ctx.Table select r).ToList();
}
或者改变处理方法。我倾向于将上下文的生存期与封闭对象绑定,在您的情况下,封闭对象将是ASP.NET页面对象。使上下文成为成员变量,并在Page中处理它。dispose