Tôi có hai đối tượng kinh doanh liên quan - A và B. liên kết là (A-> B) nhiều-một, với B.Id a khóa ngoại trong A (vì vậy A có A.B_id trong DB).NHibernate - truy cập ID của một đối tượng liên quan mà không cần tải toàn bộ đối tượng
Tôi đang sử dụng lazy = true và giải quyết hầu hết các vấn đề của mình, tuy nhiên trong A's ToString Tôi cũng muốn in A.B.Id, mà tôi nên có mà không cần phải đi xa hơn đến DB. nhưng truy cập A.B kích hoạt proxy, và vì điều này không có trong ngữ cảnh của một phiên mở, hãy ném một ngoại lệ.
một giải pháp dễ dàng nhưng xấu xí sẽ là có thuộc tính A.B_id. nhưng đó là một phần của những thứ chúng tôi đã cố gắng tránh ngay từ đầu. bất kỳ cách "hữu cơ" nào để thực hiện việc này? :) cảm ơn!
CẬP NHẬT: chỉ đọc về caching và Session.Get so với Session.Load. trước khi tôi chỉ mới mà một ném một ngoại lệ nếu đối tượng không tồn tại (Session.Load), và khác trả về một đối tượng null (Session.Get). sau khi đọc về bộ nhớ đệm here, rõ ràng là Session.Load trả về proxy cho đối tượng và chỉ tìm nạp nó khi một thuộc tính khác với ID được truy cập, rất giống với những gì tôi cần từ các liên kết! bây giờ tôi đã thêm id đối tượng riêng biệt (đã thêm B_Id vào A để tôi có thể truy cập nó dưới dạng A.B_Id thay vì sử dụng ABId)
Tại sao bạn muốn thực hiện việc này? – Paco
như tôi đã nói, chỉ để in nhật ký, v.v., trong A's ToString(). Tôi không cần các lĩnh vực khác từ B. chỉ ID. –