我有一个名为'category'的对象,表格看起来像这样。
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被更改时(向左移动||向右移动以成为上述列表条目的子项)。传递给列表呈现方法的数据不反映更改UNTIL通过按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);
}
一切正常。问题是在行&gt;&gt; foreach (nc_Category category in root.nc_Categorys)
root.nc_Categorys
(当前对象的子项)不会反映在刷新页面之前所做的更改。我可以在调试中看到这一点。所以当延迟加载时,NHibernate没有得到更新。
更改在数据库中提交,刷新并可见。它们不是由NHibernate检索的。
我在对象上尝试了Refresh()方法,这不起作用。需要刷新对象的子项。
我试过清理会话和许多其他事情无济于事。只有在更改ParentCategoryID
时才会发生这种情况。更改Position
后会立即显示。
这似乎相似但不确定:http://jira.nhibernate.org/browse/NH-1604
我是回复。转到同一页面(yuk)。它工作正常,但它不应该需要它。非常感谢您的回复。
答案 0 :(得分:0)
它是否与应用程序中不同点使用的不同会话有关,我知道java hibernate选项有一个概念,即对后端servlet以及jsp前端内容使用相同的hibernate会话。