2008-12-14 13 views
3

У меня есть объект, который называется «категория», и таблица выглядит так.Обновление дочерних объектов 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)root.nc_Categorys (дочерние элементы текущего объекта) не отражают изменений, внесенных до обновления страницы. Я вижу это в отладке. Поэтому NHibernate не получает обновления при ленивой загрузке.

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

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

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

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

Я response.redirecting на той же странице (ЮК). Он отлично работает, но он не нуждается в этом. Ответ очень понравился.

+0

Это выглядит довольно сложно, я предлагаю опубликовать его на форумах nhibernate (http://forum.hibernate.org/viewforum.php?f=25 или http://groups.google.com/group/nhusers) вместе с простейшим возможным кодом, который воспроизводит вашу проблему. – 2008-12-15 01:21:17

ответ

0

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

Смежные вопросы