这个问题纯粹是学术性质的,因为我从不会在实际代码中做这件事。
使用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的理解。编辑:我还尝试禁用延迟加载,但没有效果。