Hallo,
Ich versuche mit NHibernate.Query große Datenmengen zu laden und zu gruppieren (~ 5 Mio Einträge). Normalerweise würde ich erwarten, dass die Gruppierung mit einem GROUP BY statement in der Datenbank abgehandelt würde. Jedoch scheint es, dass NHibernate sich zuerst alle Daten holt und dann die Gruppierung auf den geladenen Daten durchführt (Der Speicher läuft voll).
Wie ist es möglich mit NHibernate die Gruppierung in der Datenbank machen zu lassen? Muss ich etwas an meinem Query ändern oder ein ganz anderes Konzept verwenden?
Im Moment sieht der Code etwa so aus:
Code:
using (var session = NHibernateHelper.OpenSession(typeof(ServiceClass).Assembly))
{
var groups = session.Query<Entry>().Where(entry=> entry.Type == "tag")
.GroupBy(entry => new
{
entry.Data1,
DateTime.Parse(entry.Data2, CultureInfo.InvariantCulture).Date,
entry.Data3
});
foreach (var group in groups)
{
var element = group.First();
entries.Add(CreateEntry(element, group.Count()));
}
}