【发布时间】:2011-07-09 00:00:48
【问题描述】:
这个问题纯粹是学术问题,因为我从来没有想过在真实代码中这样做。
使用 LINQ to SQL,我想将 IQueryable<T> 绑定到 GridView。我尝试使用以下代码执行此操作,但出现异常:
无法访问已处置的对象。 对象名称:“Dispose 后访问的 DataContext。”。
这是我使用 LINQ to SQL 获取IQueryable<tabGenre> 的代码:
public static IQueryable<lu_Genre> GetGenres2() {
using (BooksContextDataContext ctx = new BooksContextDataContext()) {
IQueryable<tabGenre> iq = from g in ctx.tabGenre
select g;
return iq;
}
}
这是我将 GridView 绑定到返回的IQueryable<T> 的代码。
private void GetGenres() {
gvGenre.DataSource = Genre.GetGenres2();
gvGenre.DataBind();
}
那么为什么这不起作用呢?我可以只是一个.ToList<tabGenre>(),返回它,绑定到它,然后它就可以工作了,但是为什么 IQueryable 不能以同样的方式工作呢?我在这里真正想要实现的是了解 IQueryable 可以做什么。
编辑: 我也尝试禁用延迟加载,但没有影响。
【问题讨论】:
标签: linq-to-sql gridview asp.net-4.0 iqueryable