Cześć
Szukałem informacji o prefetch i nic nie znalazłem więc może ktoś mi wytłumaczyć jak to działa? Znalazłem tylko informacje, że dzięki temu można wczytać całą tabelę, czego właśnie potrzebuję. Posiadam dwie klasy abstrakcyjne w których znajdują się zapytania. Wykonują się one bardzo dużo razy, a wystarczy że wykonają się raz jednak to nie w tym problem. Chcę oprócz jednorazowego wykonania, żeby wczytały się one w całości z wykorzystaniem prefetch. Doszedłem na razie do tego co poniżej:
public static void Metoda(Session session, EmployeeProfile profile
{
if (i == 0)
{
session.Prefetch<EmployeeProfile>();
session.Prefetch<EmployeeProfileHierarchy>();
i++;
}
EmployeeProfileHierarchy[] hierarchies = EmployeeProfileHierarchy.GetByPrincipal(session, profile);
I jeszcze załączam metodę GetByPrincipal:
public static EmployeeProfileHierarchy[] GetByPrincipal(Session session, EmployeeProfile profile)
{
Query query = session.CreateQuery("Select EmployeeProfileHierarchy instances where {Principal} = @profile");
query.Parameters.Add("@profile", profile);
EmployeeProfileHierarchy[] hierarchies = (EmployeeProfileHierarchy[])query.ExecuteArray();
return hierarchies;
}
Podsumowując, chodzi mi o to aby wykorzystać prefetch do wczytania całych tabel z tabel EmployeeProfileHierarchy i EmployeeProfile których zapytania są w w/w klasach.
Jedyne informacje to Link