İki ilişkili iş nesnesine sahibim - A ve B. dernek (A-> B) çok-bir, B.Id ile A'da yabancı anahtar (A'da DB'de A.B_id var).NHibernate - tüm nesneyi tembel yüklemeden ilişkili bir nesnenin kimliğine erişin
lazy = true kullanıyorum ve problemlerimin çoğunu çözdüm, ancak A ToString'de DB'ye daha fazla yolculuk yapmadan da olması gereken A.B.Id'yi yazdırmak istiyorum. ancak A.B'ye erişmek proxy'yi etkinleştirir ve bu açık bir oturum bağlamında olmadığından bir istisna atar. Kolay ve çirkin bir çözüm, A.B_id özelliğine sahip olmak olabilir.
ama bu, ilk etapta kaçınmaya çalıştığımız şeylerin bir parçası. Bunu yapmak için herhangi bir "organik" yol? :) teşekkürler!
GÜNCELLEME: yalnızca önbelleğe alma ve Session.Get vs. Session.Load hakkında bilgi edinin. Nesne yoksa (Session.Load) ve diğeri boş nesneyi (Session.Get) döndürürse, yalnızca bir istisna atar. here'u önbelleğe alma hakkında okuduktan sonra, Session.Load nesnesine bir proxy döndürdüğü ve kimliğinden başka bir özelliğe eriştiğinde yalnızca tembel bir şekilde getirildiği açıktır; Şimdilik ayrı nesne kimliklerini ekledim (B_Id ekledim, böylece ABId'yi kullanarak A.B_Id olarak erişebildim)
Bunu neden yapmak istiyorsunuz? – Paco
dediğim gibi, sadece günlük yazdırma vb. Için, A ToString() içinde. Sadece ID'den başka alanlara ihtiyacım yok. –