wiem warianty tej kwestii zostały poproszone przed (nawet mnie), ale ja nadal nie rozumiem, co nieco na ten temat ...Prawidłowe sposób odzyskać ponad 128 dokumentów z RavenDB
It było moje zrozumienie, że można odzyskać więcej dokumentów niż ustawienie 128 domyślnej w ten sposób:
session.Advanced.MaxNumberOfRequestsPerSession = int.MaxValue;
a ja dowiedziałem się, że klauzula WHERE powinno być ExpressionTree zamiast Func, tak że jest on traktowany jako Queryable zamiast of Enumerable. Pomyślałem, że to powinno zadziałać:
public static List<T> GetObjectList<T>(Expression<Func<T, bool>> whereClause)
{
using (IDocumentSession session = GetRavenSession())
{
return session.Query<T>().Where(whereClause).ToList();
}
}
Jednak zwraca tylko 128 dokumentów. Czemu?
Uwaga, tutaj jest kod, który wywołuje powyższą metodę:
RavenDataAccessComponent.GetObjectList<Ccm>(x => x.TimeStamp > lastReadTime);
Jeśli dodać Take (n), to mogę dostać jak najwięcej dokumentów, jak mi się podoba. Na przykład, to zwraca 200 dokumentów:
return session.Query<T>().Where(whereClause).Take(200).ToList();
oparciu o to wszystko, wydaje się, że właściwym sposobem, aby pobrać tysiące dokumentów jest ustawiony MaxNumberOfRequestsPerSession i używać Take() w zapytaniu. Czy to prawda? Jeśli nie, to jak to zrobić?
Do mojej aplikacji potrzebuję pobrać tysiące dokumentów (które zawierają bardzo mało danych). Przechowujemy te dokumenty w pamięci i wykorzystujemy je jako źródło danych dla wykresów.
** EDIT **
Próbowałem za pomocą int.MaxValue w moim Take():
return session.Query<T>().Where(whereClause).Take(int.MaxValue).ToList();
i że wraca 1024. Argh. Jak uzyskać więcej niż 1024?
** EDIT 2 - Przykładowy dokument przedstawiający dane **
{
"Header_ID": 3525880,
"Sub_ID": "120403261139",
"TimeStamp": "2012-04-05T15:14:13.9870000",
"Equipment_ID": "PBG11A-CCM",
"AverageAbsorber1": "284.451",
"AverageAbsorber2": "108.442",
"AverageAbsorber3": "886.523",
"AverageAbsorber4": "176.773"
}
Czy myślisz o umieszczeniu wszystkich 10000 punktów w jednym dokumencie jako kolekcji? – SteadyEddi