nHibernateに関するかなり簡単な質問がありますが、実際にはGoogleで答えを見つけることができませんでした。親からnhibernateオブジェクトの更新されたコレクションを取得する簡単な質問
たとえば、Mail
オブジェクトに1:nの外部キーを保持する、マップされたMember
オブジェクトがあるとします。私は彼が自分の受信トレイに入ったときにユーザーのメールアイテムの現在のコレクションを取得したいと思います。 memberInstance.Mail
(タイプIList < \ Mail>)を呼び出すと、メールコレクションは戻されますが、ログイン時にmemberInstanceがキャッシュに保存されてから追加された新しいメールは反映されません。データベース。 RetrieveMailForUser
メソッドを作成した場合は、メンバーインスタンスを渡してからSession.CreateCriteria<Mail>
などのコードを呼び出します。指定されたメンバーおよびすべての現在のメールを取得しますが、使用しない場合はメンバー変数にメールコレクションを持たないようです最新のものではないメンバーvarにコレクションがあるとします。ユーザーが受信トレイを確認してキャッシュに保存するたびにメンバーを更新することができましたが、これはオーバーヘッドが大きいようです。私はnHibernateのいくつかの基本的なプリンシパルが欠けているような気がします。助けてください。ありがとう!
メンバーを呼び出すコード:
public static Member GetLoggedInUser()
{
var member = (Member) HttpContext.Current.Session[SESSION_NAME];
if(member != null &&
!NHibernateSessionManager.IsEntityAttachedToCurrentSession(member))
NHibernateSessionManager.AttachEntityToSession(member);
return member;
}
E
あなたは、コレクションの変更がキャッシュされたアイテムに反映されていないと言います。私はあなたの問題がそこにあると信じています。オブジェクトに加えた変更は、キャッシュからそのアイテムを再取得したときに反映されるべきです(SHOULD)。 Memberオブジェクトを初期化して永続化する方法に関するさらに詳しい情報を提供できますか? –
申し訳ありませんが、キャッシュではなくASPネットセッションに保存されています。ユーザーを取得するコードでオリジナルの質問を編集しました。 – Eitan