2

私はこれに似たものを持っています

var productList = order.Products.TolIst();

そして、productList をループし、次を使用して各製品を更新します。

session.SaveOrUpdate(product);

しかし、問題は、OnFlushDirty関数の製品の以前の状態が null であることです (これは理にかなっています)。

前の状態を管理/コピー/注入する方法はありますか?

ありがとう

4

1 に答える 1

2

これは、切り離されたオブジェクトの更新に関連している可能性があります。このよく似た話を読んでみてください: http://jamesfitzsimons.com/?p=152

問題の概要:

... 調査の結果、インターセプターの onFlushDirty メソッドに渡された previousState パラメーターが null であることがわかりました。...

ソリューション:

解決策は、merge() メソッド (NHibernate 2.0 の新機能) を使用することでした。Merge() は、最初のレベルのキャッシュをチェックして、指定された識別子を持つオブジェクトが以前にロードされているかどうかを確認します。その場合、そのオブジェクトを第 1 レベルのキャッシュからロードし、切り離されたオブジェクトを使用してそのプロパティを更新します。これは、セッションがオブジェクトに加えられた変更を追跡できるようになったため、フラッシュが発生したときに previousState が null ではなくなったことを意味します。

于 2013-01-31T11:33:25.363 に答える