NHibernate 子对象更新

发布于 2024-07-11 01:15:52 字数 1678 浏览 7 评论 0原文

我有一个名为“类别”的对象,表格如下所示。

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(root.nc_Categorys 中的 nc_Category 类别) root.nc_Categorys(当前对象的子级)在页面刷新之前不会反映所做的更改。 我可以在调试中看到这一点。 所以 NHibernate 在延迟加载时不会获取更新。

更改已提交、刷新并在数据库中可见。 NHibernate 不会检索它们。

我已经在对象上尝试过 Refresh() 方法,但这不起作用。 需要刷新的是该对象的子对象。

我尝试过清除会话和许多其他事情但无济于事。 仅当更改 ParentCategoryID 时才会发生这种情况。 当 Position 更改时,它们会立即显示。

这看起来相似但不确定: http://jira.nhibernate.org/browse/NH-1604

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

I have an object that called 'category' and the table looks like this.

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  

Everything works as normal when insert, update, delete etc...
The mapping is fine.

The data from this table is rendered into a html list that is 'nested' (hence the self referencing). This all renders beautifully.

When the Position is updated (move up || move down) the updated list reflects the change and the list item in question moves its position in the list.

The problem is when the ParentCatalogID is changed (move left || move right to become a child of the above list entry). The data passed through to the list render method is not reflecting the change UNTIL the page is refreshed by pressing F5, clicking refresh (reloading the page).

This will give you a basic idea of how:

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);
}

This all works fine. The problem is that in the line >> foreach (nc_Category category in root.nc_Categorys) the root.nc_Categorys (the children of the current object) does not reflect the changes made until the page is refreshed. I can see this in the debug. So NHibernate is not getting the updates when lazy loading.

The changes are committed, flushed and visible in the database. They are not retrieved by NHibernate.

I have tried Refresh() method on the object, this does not work. It is the children of the object that are required to be refreshed.

I have tried clearing the session and many other thing to no avail. This only happens when changing the ParentCategoryID. When the Position is changed they are shown immediately.

This seems similar but not sure: http://jira.nhibernate.org/browse/NH-1604

I am response.redirecting to the same page (yuk). It works fine, but it should not need it. Response very much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽容 2024-07-18 01:15:53

是否与应用程序中不同点使用的不同会话有关,我知道 java hibernate 选项有一个概念,即为后端 servlet 以及 jsp 前端内容使用相同的 hibernate 会话。

Could it be related to different sessions being used at the different points in your app, I know the java hibernate option has a concept of using the same hibernate session for the backend servlet as well as the jsp front end stuff.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文