3

我有一个名为“类别”的对象,表格看起来像这样。

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

我正在响应。重定向到同一页面(yuk)。它工作正常,但它不应该需要它。非常感谢您的回应。

4

1 回答 1

0

它是否与在您的应用程序的不同点使用的不同会话有关,我知道 java hibernate 选项有一个概念,即对后端 servlet 以及 jsp 前端的东西使用相同的休眠会话。

于 2008-12-23T08:28:31.417 回答