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 は遅延読み込み時に更新を取得していません。

変更はコミットされ、フラッシュされ、データベースに表示されます。それらは Hibernate によって取得されません。

オブジェクトで Refresh() メソッドを試しましたが、うまくいきません。リフレッシュが必要なのはオブジェクトの子です。

セッションをクリアしようとしましたが、他の多くのことは役に立ちませんでした。これは、 を変更した場合にのみ発生しParentCategoryIDます。が変更されると、Positionすぐに表示されます。

これは似ているようですが、よくわかりません: http://jira.nhibernate.org/browse/NH-1604

同じページ (yuk) に response.redirecting しています。正常に動作しますが、必要ないはずです。対応は大変有り難く存じます。

4

1 に答える 1

0

アプリのさまざまなポイントで使用されているさまざまなセッションに関連している可能性があります.Java休止状態オプションには、バックエンドサーブレットとjspフロントエンドのものに同じ休止状態セッションを使用するという概念があることを知っています.

于 2008-12-23T08:28:31.417 に答える