Tôi muốn tải các thực thể gốc và mong muốn tải tất cả các bộ sưu tập con của nó và các thành viên tổng hợp.Mong muốn tải bộ sưu tập con bằng NHibernate
Đã cố gắng sử dụng SetFetchMode
trong FluentNHibernate, nhưng tôi nhận được bản sao trong một trong các bộ sưu tập con vì tôi có độ sâu 3 cấp. DistinctRootEntityResultTransformer
tiếc là chỉ loại bỏ các bản sao gốc.
return Session.CreateInvoiceBaseCriteria(query, archived)
.AddOrder(new Order(query.Order, query.OrderType == OrderType.ASC))
.SetFetchMode("States", FetchMode.Eager)
.SetFetchMode("Attestations", FetchMode.Eager)
.SetFetchMode("AttestationRequests", FetchMode.Eager)
.SetFetchMode("AttestationRequests.Reminders", FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Invoice>();
Tôi có thể sử dụng nhiều truy vấn hoặc điều gì đó tương tự để lưu trữ này không?
Hơn nữa, cách tiếp cận này sẽ không dẫn đến các tập kết quả rất lớn không cần thiết từ cơ sở dữ liệu không?
Mọi đề xuất?
Thực sự là một bài viết hay, nhưng không chắc chắn liệu tôi có thể áp dụng nó cho tình huống của mình hay không. Các giải pháp được mô tả trong bài viết về mong muốn tải một thực thể gốc cụ thể, vấn đề của tôi là tôi muốn mong muốn tải một bộ sưu tập của các thực thể gốc. Nếu tôi sử dụng MultiCritera, tôi cần tìm cách kết nối tất cả các truy vấn khác nhau mà không cần chỉ định một thực thể cụ thể. Gợi ý làm thế nào có thể được thực hiện? – Kristoffer
Ví dụ đó chỉ có một cấp phân cấp bổ sung, nhưng không có cháu, mà MultiQuery/MultiCriteria có vẻ khá vô dụng, vì các truy vấn sau không thể tham chiếu kết quả từ các truy vấn trước đó (như truy vấn số 1: chọn rootObjects r left join fetch children c nơi ...; Truy vấn # 2: chọn cháu g nơi cha mẹ trong c). –