У меня есть объект, который называется «категория», и таблица выглядит так.Обновление дочерних объектов 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 на той же странице (ЮК). Он отлично работает, но он не нуждается в этом. Ответ очень понравился.
Это выглядит довольно сложно, я предлагаю опубликовать его на форумах nhibernate (http://forum.hibernate.org/viewforum.php?f=25 или http://groups.google.com/group/nhusers) вместе с простейшим возможным кодом, который воспроизводит вашу проблему. – 2008-12-15 01:21:17