DataBind () в C # - PullRequest
       7

DataBind () в C #

2 голосов
/ 06 ноября 2011

Я довольно новичок в Entity Framework, а также в LINQ.Я использовал DataGridView раньше, и для установки источника данных ему было достаточно

DataGridView1.datasource=dt; // dt=datatable

.Но при чтении книги ASP.Net они дали код с использованием Entity Framework как

using (PlanetWroxEntities myEntities = new PlanetWroxEntities())
{
    var allGenres = from genre in myEntities.Genres
    orderby genre.Name
    select new { genre.Name, genre.Reviews };
    GridView1.DataSource = allGenres;
    GridView1.DataBind();
}

Почему это DataBind() используется в конце.Я видел документ MSDN для DataBind(), в котором говорится: «(Он) связывает источник данных с активированным серверным элементом управления и всеми его дочерними элементами управления».Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения. "

Поэтому меня просто смутило, что на самом деле делает DataBind()?Я видел, как некоторые люди используют DataBind для DataGridView, и я не уверен, почему?

Спасибо.

1 Ответ

1 голос
/ 06 ноября 2011

Метод DataBind заставляет источник данных считываться и привязываться к элементу управления.Поскольку вы привязываете данные в контексте PlanetWroxEntities, который вы располагаете впоследствии, элемент управления должен прочитать данные из источника данных, прежде чем утилизировать PlanetWroxEntities.Другими словами: до закрытия соединения с базой данных.

Альтернативой является принудительное выполнение запроса путем вызова метода .ToList().Это устанавливает свойство DataSource в не ленивый список, содержащий конкретные данные.

using (PlanetWroxEntities myEntities = new PlanetWroxEntities())
{
    var allGenres = from genre in myEntities.Genres
    orderby genre.Name
    select new { genre.Name, genre.Reviews };
    GridView1.DataSource = allGenres.ToList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...