Mam dość głęboki wykres obiektów (5-6 węzłów), a gdy przejdę przez to fragmenty, NHProf mówi mi, że mam problem "Wybierz N + 1" (który zrobić).Zapobieganie płynnemu NHibernate Wybierz n + 1
Dwa roztwory jestem świadomy są
- Chętni dzieci obciążenia
- rozpadają mój obiekt wykres (i chętny obciążenie)
ja naprawdę nie chcę zrobić albo (chociaż mogę później rozłożyć wykres, ponieważ widzę, że rośnie)
Na razie ....
Czy można powiedzieć NHibernate (z FluentNHibernate), że gdy próbuję uzyskać dostęp do dzieci, załadować je wszystkie za jednym zamachem, zamiast wybrać-n + 1-ing, jak I iteracyjne nad nimi?
Otrzymuję także "zestaw wyników bez ograniczeń", który prawdopodobnie jest tym samym problemem (lub raczej zostanie rozwiązany przez powyższe rozwiązanie, jeśli to możliwe).
Każda kolekcja dziecięca (na całym wykresie) będzie miała tylko około 20 członków, ale 20^5 to dużo, więc nie chcę mieć ochoty ładować wszystkiego, gdy dostanę root, ale po prostu wszystko. kolekcja dziecięca, ilekroć zbliżam się do niej.
Edytuj: po namyśle .... co jeśli chcę wprowadzić stronicowanie, gdy chcę renderować dzieci? Czy MUSZĘ złamać tutaj mój wykres obiektowy, czy jest jakiś podstęp, który mogę zastosować, aby rozwiązać wszystkie te problemy?
"Wydaje mi się, że chcesz kontynuować podejście polegające na używaniu modelu domeny, zamiast tworzyć specjalne zapytanie nhibernate do obsługi tego scenariusza." na pewno. ostatnia rzecz, której chcę, to konkretne zapytania. Sprawdzam te rzeczy, ta –
note -> interfejs fluent-nh obsługuje teraz atrybut BatchSize() – KevinT