NHibernate-Aggregatabfrage für eine Eins-zu-Viele-Beziehung

Ich habe folgende Entitäten:

<code>class Topic
{
    public virtual int Id {get; private set;} 
    public virtual ICollection<Vote> Votes {get; private set; }
}

class Vote
{
    public virtual Topic Topic {get; private set;}
    public virtual VoteType VotedTo {get; private set;} // enum VotedUp, VotedDown
}
</code>

Ich muss aus der Datenbank die nächsten Informationen laden - alle Themen (IDs, eigentlich Namen, aber in diesem Demo-Fall ist es egal) und zwei weitere FelderCountOfVotedUp, CountOfVotedDown (Aggregate). So wie ich es in der SQL-Welt verstehe, brauchen wir Joins, Group By, Case und Count.

Ist es möglich, diese Informationen mit LINQ mit weniger Operationen mit db zu erhalten? Ich meine N + 1, zusätzliche Auswahlen, Verbindungen usw.

Ich habe nur versucht, NHs LINQ zu verwenden, aber es handelt sich nur um Abfrage-Aggregate für Topic.Id, und ich konnte keine der Votes-Auflistungen zählen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage