Привязка GridView к IQueryable

Этот вопрос носит чисто академический характер, потому что мне никогда не приходило в голову делать это в реальном коде.

Используя LINQ to SQL, я хочу выполнить привязку IQueryable в GridView. Я пытался сделать это с помощью следующего кода, но получаю исключение:

Невозможно получить доступ к удаленному объекту. Имя объекта: «DataContext доступен после Dispose.»

Вот мой код, который получает IQueryable с использованием LINQ to SQL:

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 .

private void GetGenres() {
    gvGenre.DataSource = Genre.GetGenres2();
    gvGenre.DataBind();
}

Так почему это не работает? Я мог бы просто .ToList () вернуть его, привязать к нему, и тогда он заработал бы, но почему IQueryable не работает таким же образом? Я действительно пытаюсь понять, на что способен IQueryable.

EDIT: Я также пробовал отключить ленивую загрузку, но безрезультатно.

5
задан ROMANIA_engineer 5 July 2017 в 23:19
поделиться