6

これが尋ねられたことは知っていますが、この問題を解決できません。

コレクションを持つ nhibernate オブジェクトがあるとします。

問題は、コレクション内のオブジェクトが別のユーザーによってデータベース内で更新された場合 (テスト目的でデータベースを手動で変更した場合)、nhibernate にコレクション値を更新させる方法が見つからないようです。

リフレッシュ、エビクト、ロードを再度試みました...セッションを閉じて新しいセッションを作成するだけです。しかし、この解決策には問題があると思います.nhibernateに「おい、コレクション内のアイテムを更新してください」と伝えるのはどれほど難しいでしょうか?

しかし、とにかく私はそれを機能させることができません。

どうもありがとう

4

3 に答える 3

1

これは実際には機能するはずがないため、機能しません。

NHibernate はデフォルトでセッション レベルのキャッシュを使用して、読み取りを最適化し、変更を追跡します。

セッションは範囲を限定し、必要な場合にのみ使用する必要があるため、データアクセスの周りで正しい作業単位を使用していないようです。

これが Web アプリの一部である場合は、「リクエストごとのセッション」アプローチに従うことをお勧めします。

本当にこれを機能させたい場合は、おそらくエンティティとその子をセッションから追い出し、再フェッチを強制することができますが、これは厄介であり、私は本当にお勧めしません.

于 2012-11-20T14:54:46.417 に答える