我有一个名为“类别”的对象,表格看起来像这样。
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)。它工作正常,但它不应该需要它。非常感谢您的回应。