Tengo dos objetos de negocio asociados - A y B. la asociación es (A-> B) muchos-a-uno, con B.Id una clave externa en A (por lo que A tiene A.B_id en el DB).NHibernate - acceder al ID de un objeto asociado sin carga diferida todo el objeto
Estoy usando lazy = true y resuelto la mayoría de mis problemas, , sin embargo, en A's ToString también quiero imprimir A.B.Id, que debería tener sin más viajes a la base de datos. pero el acceso a A.B activa el proxy, y como esto no está en el contexto de una sesión abierta, arroja una excepción.
una solución fácil pero fea sería tener la propiedad A.B_id. pero eso es parte de las cosas que intentamos evitar en primer lugar. ¿alguna forma "orgánica" de hacer esto? :) gracias!
ACTUALIZACIÓN: acabo de leer sobre almacenamiento en caché y Session.Get vs. Session.Load. antes solo lo nuevo, arroja una excepción si el objeto no existe (Session.Load) y el otro devuelve un objeto nulo (Session.Get). después de leer sobre el almacenamiento en caché here, está claro que Session.Load devuelve un proxy al objeto, y solo lo recupera de forma perezosa cuando se accede a una propiedad distinta de la ID, que es muy similar a lo que necesito de las asociaciones. por ahora agregué los identificadores de objeto por separado (B_Id agregado a A para poder acceder a él como A.B_Id en lugar de usar ABId)
¿Por qué quieres hacer esto? – Paco
como dije, solo para la impresión de registro, etc., en A's ToString(). No necesito otros campos de B. solo la ID. –