9

NHibernate(2.0.1.4)とNHibernate.Linq(1.0.0.4)を使用して、データベースからノードタイプのオブジェクトを取得しています。

これらのオブジェクトを取得すると、取得したコレクションの最後のオブジェクトはプロキシタイプになります(「NHibernate.ByteCode.LinFu」を使用したため)。

次のlinqクエリを使用しました。

var mynodes = from node in session.Linq<Node>() where ancestorNodes.Contains(node.Id) select node).ToList()

anchestorNodesは、ノードオブジェクトが取得するIDのリストです。

「ancestorNodes」リストに3つのIDがある場合、クエリから取得した結果の最後のオブジェクト(mynodes)はnodeProxyタイプです。

これはどうやってできるの?なぜそれが常に最後のオブジェクトなのですか?どうすればこの問題を解決できますか?

4

1 に答える 1

17

Proxy オブジェクトが INhibernateProxy を実装している場合、次のコードを使用して NHibernate でオブジェクトのプロキシを解除できます。

iAmaSession.GetSessionImplementation().PersistenceContext.Unproxy(iAmaProxy)

お役に立てれば!

于 2009-12-16T07:26:30.787 に答える