Mam dwa powiązane obiekty biznesowe - A i B. powiązanie to (A-> B) wiele do jednego, z B.Id a klucz obcy w A (więc A ma A.B_id w DB).NHibernate - dostęp do identyfikatora powiązanego obiektu bez leniwego ładowania całego obiektu
Używam lazy = true i rozwiązałem większość moich problemów, jednak w A To ToString chcę wydrukować również A.B.Id, które powinienem mieć bez dalszych wycieczek do DB. ale dostęp do A.B aktywuje proxy, a ponieważ nie jest to w kontekście otwartej sesji, zgłasza wyjątek.
jednym łatwym, ale brzydkim rozwiązaniem byłoby posiadanie własności A.B_id. ale to jest część rzeczy, których staraliśmy się unikać w pierwszej kolejności. jakikolwiek "ekologiczny" sposób na zrobienie tego? :) dzięki!
AKTUALIZACJA: po prostu przeczytaj o buforowaniu i sesji. Przejdź do sesji. Prześlij. zanim będę tylko nowy, który rzuci wyjątek, jeśli obiekt nie istnieje (Session.Load), a drugi zwraca obiekt zerowy (Session.Get). po przeczytaniu o buforowaniu here, jasne jest, że Session.Load zwraca proxy do obiektu, i tylko leniwie pobiera je, gdy dostęp do właściwości innej niż ID jest dostępny, co jest bardzo podobne do tego, czego potrzebuję od skojarzeń! na razie dodałem oddzielne identyfikatory obiektów (dodano B_Id do A, więc mogę uzyskać do nich dostęp jako A.B_Id zamiast ABId)
Dlaczego chcesz to zrobić? – Paco
jak już wspomniałem, tylko dla drukowania dziennika itp., W A To ToString(). Nie potrzebuję innych pól z B. tylko identyfikator. –