2009-03-24 1 views
9

私の前でコードにアクセスする必要がないので、誰かがSession.Evict()で私を助けることができるかどうか疑問に思っていました。NHibernate Session.Evict()

私は、アドレスの子コレクションを持つPersonオブジェクトを持っているとします。セッションからPersonオブジェクトを移入し、Addressesコレクションを遅延ロードします。次に、Session.Evict(personObject)を呼び出して、Personオブジェクトをセッションから切り離します。私の質問は、私がAddressesコレクションにアクセスしようとするとnullを返すか、NHibernateプロキシが関連セッションを見つけることができないため例外が発生するかどうかです。

答えて

18

は、その後、コレクションにも立ち退き後にアクセスできるようになります。しかし、エンティティを退去させて子コレクションを遅延ロードしようとすると、例外が発生します。

+0

+1ユニットテストをしている間に今日まったく同じシナリオが発生しました –

0

私の前にコードはありませんが、メモリからはおそらく例外が発生します。

怠惰な読み込みと作業がある場合、NHibernateはAddressesコレクションを読み込もうとします。間違った値やコレクションを返すことは決してありません。要求されたものをロードできない場合にのみ不平を言います。あなたは、エンティティを立ち退かせる前に、怠惰な負荷が発生する原因となる場合

+0

が、これは理にかなって...私はチャンスを得るとき、私はそれをテストします。回答ありがとうございました – lomaxx

6

NHibernate.LazyInitializationExceptionを受け取ります。