Обновление дочерних объектов NHibernate

У меня есть объект, который называется «категория», и таблица выглядит следующим образом.

CATEGORY
-------------------------------------------------
ID                 int  
ParentCatalogID    int  
ParentCategoryID   int << This is the ID of this table 
Position           int  
Title              nvarchar(128)    
Description        nvarchar(1024)   
LastUpdated        datetime 
DateCreated        datetime 
IsActive           bit  

Все работает как обычно, когда вставка, обновление, удаление и т. Д ... Сопоставление в порядке.

Данные из этой таблицы отображаются в html-списке, который является «вложенным» (отсюда и самоссылка). Это все делает красиво.

Когда Positionобъект обновляется (перемещается вверх ||, перемещается вниз), обновленный список отражает изменение, и рассматриваемый элемент списка перемещает свою позицию в списке.

Проблема заключается в том, что ParentCatalogID изменяется (переместите влево ||, переместите вправо, чтобы стать дочерним элементом вышеупомянутой записи списка). Данные, переданные методу рендеринга списка, не отражают изменения до обновления страницы, нажав F5, нажав Обновить (перезагрузка страницы).

Это даст вам основную идею о том, как:

foreach (nc_Category category in root.nc_Categorys)
{
  HtmlControl listItem = BuildListItemFromCategory(category);
  if (category.nc_Categorys.Count > 0)
      {
        listItem.Controls.Add(BuildListFromCategorys(category.nc_Categorys));
      }
  mainList.Controls.Add(listItem);
}

Это все отлично работает. Проблема заключается в том, что в строке >> foreach (nc_Category category in root.nc_Categorys)the root.nc_Categorys(дочерние элементы текущего объекта) не отражаются изменения, внесенные до обновления страницы. Я могу видеть это в отладке. Так что NHibernate не получает обновления при ленивой загрузке.

Изменения фиксируются, сбрасываются и отображаются в базе данных. Они не получены NHibernate.

Я пробовал метод Refresh () на объекте, это не работает. Это дети объекта, которые должны быть обновлены.

Я попытался очистить сессию и многое другое безрезультатно. Это происходит только при изменении ParentCategoryID. При Positionизменении они отображаются сразу.

Это похоже, но не уверен: http://jira.nhibernate.org/browse/NH-1604

Я отвечаю. Переадресация на ту же страницу (юк). Работает нормально, но в этом нет необходимости. Ответ очень ценится.

14.12.2008 22:59:56
Это выглядит довольно сложно, я бы посоветовал вам опубликовать это на форумах nhibernate ( forum.hibernate.org/viewforum.php?f=25 или groups.google.com/group/nhusers ) вместе с простейшим кодом, который воспроизводит ваша проблема.
Mauricio Scheffer 15.12.2008 01:21:17
Похоже, что здесь не так много пользователей NHibernate, к тому же я нахожу действительно раздражающим этот сайт, что я не могу опубликовать более 300 комментариев на комментарии, подобные этому, кажется, что его целью являются простые прямые вопросы, а не Устранение неполадок в конкретной проблеме.
Mauricio Scheffer 15.12.2008 01:22:55
1 ОТВЕТ

Может ли это быть связано с тем, что в разных точках вашего приложения используются разные сеансы, я знаю, что опция jiber hibernate имеет концепцию использования одного и того же сеанса гибернации для внутреннего сервлета, а также для jsp-интерфейса.

0
23.12.2008 08:28:31