2011-12-09 5 views
0

私はオブジェクトにレイジープロパティを使用しています。 1)そのプロパティを持たないオブジェクトをロードし、セッションからデタッチする必要があります。 2)次に、このオブジェクトを新しく作成したセッションに再接続し、そのプロパティをロードする必要があります。怠惰は場合 Nhibernateにおけるプロキシの検出と接続

using (ISession session = GetSessionFactory().OpenSession()) 
     { 
      session.Update(dataResource); 
      NHibernateUtil.Initialize(dataResource.Value); 
     } 

だった場合:私はそれを再接続し、(2)履行しようとしていたより

return session 
       .CreateCriteria<DataResource>() 
       .List<DataResource>() 
       .ToArray(); 

だから、私はデータベース(1)からデータをフェッチしています1対多のリンクで - すべて正常に動作します。 (1)stepは私の実際のオブジェクトを返す。プロキシはそのプロパティに設定され、(2)ステップの後では実際のオブジェクトになる。 しかし、私はプロパティで怠惰が必要な場合は、NHibernateは実際のオブジェクトでそれを処理することはできないようです。代わりに、ステップ(1)の後にプロキシを返します。ステップ(2)よりも、MappingExceptionをスローします:.Update()行のCastle.Proxies.DataResourceProxyのための保持者はありません。何とか自分のプロキシを認識できません。

+0

は'てSession.lock(dataResource、LockMode.NONEは)にしてみてください参照unproxyする – Firo

答えて

関連する問題