2009-12-08 21 views
9

Używam NHibernate (2.0.1.4) z NHibernate.Linq (1.0.0.4), aby uzyskać obiekty typu Node z bazy danych.NHibernate Pobieranie obiektów bez proxy

Kiedy się te obiekty, ostatni przedmiot kolekcji mam to od rodzaju Proxy (bo użyłem „NHibernate.ByteCode.LinFu””)

użyłem następujące kwerendy LINQ:

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

anchestorNodes jest lista identyfikatorów dla obiektów węzłów dostać.

Kiedy mam 3 identyfikatorów na liście „ancestorNodes”, ostatni przedmiot wyniku (mynodes) mam z zapytania jest z wpisz nodeProxy.

Jak to możliwe? Dlaczego to zawsze jest ostatni obiekt? Jak mogę rozwiązać ten problem?

Odpowiedz

17

Jeśli obiekt Proxy realizuje INhibernateProxy można unproxy obiekt z NHibernate z następującego kodu:

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

nadzieję, że to pomaga!