セッションで遅延プロパティを持つオブジェクトを取得しようとし、別のセッションでそれを更新しようとしました。しかし、それはError: No persister for SecUserProxy (actual class is SecUser)で失敗しました
私はNHibernate 3.4を使用しています。私がググったとき、私はそれが修正されたバグであることを知りました。
また、プロキシ オブジェクトが INhibernateProxy を実装している場合、NHibernate を使用してオブジェクトのプロキシを解除できるというこの投稿も見つけました。NHibernate はプラグ可能なプロキシ ファクトリ (Castle、LinFu など) をサポートしなくなったため、内部のものを使用します。内部のものはおそらく INhibernateProxy であると想定しています
したがって、オブジェクトを次のように更新する新しいセッションで次のことを行いました。
object unprox_obj = Session
.GetSessionImplementation()
.PersistenceContext.Unproxy(secUserobj);
これと同じオブジェクトを取得することを見込んでいますが、実際のタイプ、つまり SecUser を使用して、エラーなしで更新できるようにします。ただし、それでもプロキシ オブジェクトが返されます。
何が起こっているのか理解できませんか?
更新: 「secUserobj」が INhibernateProxy ではないことに気付きました。では、別のセッション内でオブジェクトを更新するにはどうすれば INhibernateProxy にできますか?
if (secUserobj is INHibernateProxy)
{
unprox_obj = Session
.GetSessionImplementation()
.PersistenceContext.Unproxy(secUserobj);
}