这个问题纯粹是学术问题,因为我从来没有想过要在真实代码中这样做。绑定GridView到IQueryable <T>
使用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可以做什么的理解。
编辑: 我也尝试禁用延迟加载,但没有影响。
这对我来说非常有意义。我实际上必须在工作中向同事解释这一点,你的解释是教科书,所以我会使用它。谢谢!! – Jagd 2011-03-04 17:41:55