привязка gridview с помощью моего метода getall - структура сущности - PullRequest
2 голосов
/ 13 сентября 2010

Хорошо, извините, пожалуйста, мои ссылки на сетку.

Итак, у меня есть этот метод в классе getall (), он получает коллекцию entites из модели структуры сущностей для таблицы specfic, проверяет, существует ли таблица, и затем выполняет запрос, используя linq лица). Это работает, так как я использовал точку останова и даже создал отдельный тестовый проект для его тестирования. Однако связывание его с gridview оказалось для меня трудным.

Это код, который я использовал:

защищенный void Button2_Click (объект отправитель, EventArgs e)

    {
        dCollection d = new dCollection();

        GridView1.DataSource = d.GetAll();
        GridView1.DataBind();
    }

Однако я получаю сообщение об ошибке:

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection. 

Я использую коллекцию, чтобы получить все мои методы из класса dcollection, и один из моих методов - это getall, который будет получать все записи из таблицы. Почему это не работает?

1 Ответ

2 голосов
/ 13 сентября 2010

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

Решение состоит в том, чтобы либо «Стремление загрузить» всех свойств навигации, которые использует ваш GridView, либо отключить отложенную загрузку в контексте вашего объекта.

В вашем случае я бы предложил всегда отключать отложенную загрузку независимо от того, хотите ли вы загружать свойства навигации, так как для таких веб-приложений рекомендуется всегда отключать отложенную загрузку. После того, как он отключен, вы все равно можете явно загружать связанные данные по требованию или при желании загрузить их с первоначальным запросом.

В этом сообщении содержится более подробное обсуждение этой проблемы, а также способы отключения отложенной загрузки.

Кстати, причина, по которой ваш тестовый проект работает, заключается в том, что у вас нет доступа к этим «не загруженным» свойствам навигации, поэтому LazyLoading не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...