我随机获取"在Dispose"之后访问DataContext错误,但仅限于aspx和ascx页面/控件。是否有一般规则我不应该在使用datacontexts的页面上调用内联方法?
我假设在页面呈现并调用方法时,datacontext已被处理?
e.g。在default.aspx
上<%= CurrentContent.GetText("Intro") %>
CurrentContent实际上是default.aspx.cs中引用的数据库对象
答案 0 :(得分:1)
假设您正在使用它
using (MyDbContext ctx = new MyDbContext())
{
return from r in ctx.Table select r;
}
延迟执行就是发生在您身上的事情。该查询不会立即执行,并且仅在最终使用返回的枚举数时运行 - 在这种情况下,在使用块处理您的上下文之后。如果您想确定没有发生这种情况,请将查询模式更改为
using (MyDbContext ctx = new MyDbContext())
{
return (from r in ctx.Table select r).ToList();
}
或更改您的处理方法。我倾向于将我的上下文的生命周期绑定到封闭对象,在您的情况下,它将是ASP.NET Page对象。使上下文成为成员变量并将其丢弃在Page.Dispose
中