2011-01-04 1 views
4

abrufen Ich versuche, eine Gruppe von Linq Abfrage mit NH3 durchzuführen. Ich kenne die unterschwelligen SQL-Schwierigkeiten. Ich weiß, dass es nicht möglich ist, aber im Idealfall würde ich die Gruppe gerne durch eine Entität machen und sie in ihrer Gesamtheit abrufen lassen. Etwas wie:Kann nicht Gruppen von Entitäten oder durch zusammengesetzte Schlüssel mit Nhibernate Linq

var list = from proposals in Session.Query<Proposal>() 
      group proposals by proposals.Job 
      into jobGrouping 
      select new { 
       Job = jobGrouping.Key, 
       TotalProposals = jobGrouping.Count() 
      }; 

Dies erzeugt eine illegale SQL-Abfrage, da sie die ganze Arbeit Einheit, sondern Gruppe durch seine Id nur abzurufen versucht.

Ich habe versucht, durch ein zusammengesetztes Feld Gruppierung:

var list = from proposals in Session.Query<Proposal>() 
        group proposals by new { proposals.Job.Name, proposals.Job.Status} 
        into jobGrouping 
        select new { 
         Job = jobGrouping.Key.Name, 
         Status = jobGrouping.Key.Status, 
         TotalProposals = jobGrouping.Count() 
        }; 

Aber immer, wenn ich versuche, diese erhalte ich eine Ausnahme, wenn NHibernate tryes einen Ausdruck Baum zu bauen:

Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.

Wer weiß, ob es eine Möglichkeit gibt, dies mit NHibernate zu erreichen?

Danke, Ilan

+0

+1 Ich habe das gleiche Problem –

+1

https://nhibernate.jira.com/browse/NH-3027 ist relevant für Ihr (erstes) Problem - es bleibt ab NH 3.2 ungelöst –

Antwort

0

Ich hatte ein ähnliches Problem versucht die .join Erweiterung Methode mehrfach zu verwenden, wo der Ausdruck Baum alias direkt aus dem Lambda-Parameter-Namen genommen wurde.

Mein Wissen über die SQL Wie Linq-Syntax ist begrenzt, aber ich würde annehmen, dass es irgendwie in die fließende Entsprechung übersetzt, wo die Lambda-Aliasnamen automatisch zugewiesen werden.

Wenn das der Fall ist, ist es möglich, dass dies auf die fließend Syntax mit expliziten einzigartigen labmda Aliase übersetzen Sie das Problem vermeiden konnte

Verwandte Themen