GridView не заставляет NHibernate-прокси загружать отношения - PullRequest
0 голосов
/ 17 ноября 2009

В настоящее время я изучаю NHibernate, и я хотел бы привязать данные к веб-элементам управления (т. Е. GridView).

В моем текущем примере я использую Fluent NHibernate для сопоставления двух таблиц с их бизнес-объектами ( Project и ProjectStatus ). У меня также есть отношение "Проект имеет ProjectStatus" (многие-к-одному).

Структура класса проекта:

Project.ID
Project.Name
Project.ProjectStatus.Name
Project.ProjectStatus.Description

Когда я связываю список объектов Project (с lazy = "proxy") с GridView, GridView не вызывает загрузку ссылочной таблицы. В результате поля Имя и Описание ProjectStatus не учитываются элементом управления GridView.

Есть ли способ получить истинно ленивую загрузку в сочетании с привязанным к данным GridView?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2009

Это должно работать без проблем. Я подозреваю, что проблема заключается в том, что сама привязка данных не имеет доступа к свойствам дочернего объекта. Как вы привязываетесь к свойствам ProjectStatus? Насколько я знаю, вы не можете напрямую связываться с дочерними объектами. Вы должны установить значения в обработчике события OnRowDataBound или с помощью Eval.

Я бы сначала создал обработчик OnRowDataBound и разбил бы на DataRow. Изучите e.Row.DataItem в ближайшем окне, чтобы убедиться, что дочерний объект загружается. Если это так, то проблема заключается в привязке.

2 голосов
/ 17 ноября 2009

Сохраняете ли вы ISession в контексте запроса и сбрасываете его в конце запроса? Если нет, то вы должны начать новый сеанс в методе begin_ request файла global.asax.cs, сохранить его в контексте запроса, затем вернуть его обратно в метод end_request и очистить его.

...