Esta pregunta es puramente académica, porque nunca soñaría con hacer esto en código real.Encuadernación GridView a IQueryable <T>
Usando LINQ to SQL, quiero enlazar un IQueryable<T>
a un GridView. Intenté hacer esto con el siguiente código, pero obtengo la excepción:
No se puede acceder a un objeto eliminado. Nombre del objeto: 'DataContext se accede después de deshacerse de.'.
Aquí está mi código que recibe un IQueryable<tabGenre>
usando LINQ a SQL:
public static IQueryable<lu_Genre> GetGenres2() {
using (BooksContextDataContext ctx = new BooksContextDataContext()) {
IQueryable<tabGenre> iq = from g in ctx.tabGenre
select g;
return iq;
}
}
Y aquí es mi código que une el GridView a la IQueryable<T>
devuelto.
private void GetGenres() {
gvGenre.DataSource = Genre.GetGenres2();
gvGenre.DataBind();
}
¿Por qué no funciona? Podría simplemente un .ToList<tabGenre>()
, devolverlo, enlazarlo y luego funcionaría, pero ¿por qué IQueryable no funciona de la misma manera? Lo que estoy tratando de lograr aquí es una comprensión de lo que IQueryable puede hacer.
EDIT: También intenté desactivar la carga diferida, pero no afectó.
Esto tiene mucho sentido para mí ahora. De hecho, tengo que explicar esto a algunos compañeros aquí en el trabajo, y su explicación es libro de texto, así que lo usaré. ¡¡Gracias!! – Jagd