2012-06-29 22 views
5

Ich bekomme eine "NotSupportedException" beim Ausführen dieser Linq-Abfrage. "Die angegebene Methode wird nicht unterstützt." Welche Methode? Selbst wenn "Count()" auskommentiert wurde, ist der Fehler derselbe. Null innere Ausnahme.NotSupportedException mit linq query und groupBy

Stack Trace:

bei Hydra.WPF.ViewModels.AddressListViewModel._primaryMemberListWorker_DoWork (Object Absender, DoWorkEventArgs e) in M: \ Projects \ Hydra \ WPF \ Viewmodels \ Address \ AddressListViewModel.cs: Linie 1377 bei System.ComponentModel.BackgroundWorker.WorkerThreadStart (Object Argument)

die SQL-Abfrage:

Select * From _Members 
Inner Join AddressDetailsCCN a on a.MemberId=_Members.MemberID 
Inner Join 
    (
    Select Address+Address2 as CombinedAddress 
    From AddressDetailsCCN Where ListId=84 
    group by Address+Address2 
    Having COUNT(*)>1 
) B on B.CombinedAddress=A.Address+A.Address2 
Where CombinedAddress is not null AND CombinedAddress!='' AND a.ListId=84 
Order by ClientID, CombinedAddress 

Linq:

var grouped = 
    (from mem in session.Query<Member>() 
    join detail in session.Query<Detail>() on mem.Id equals detail.Member.Id 
    join d2 in (from d3 in session.Query<Detail>() 
       where d3.AddressList.Id == criteria.AddressList.Id 
       group d3 by d3.Address + d3.Address2 into x 
       where x.Count() > 1 
       select x) on detail.Address+detail.Address2 equals d2.Key 
    where detail.AddressList.Id==criteria.AddressList.Id 
    select mem); 
+0

Welche Zeile ist 1377? – walther

+6

Die linq-Implementierung von Hibernate hat Probleme mit grundlegenden Operatoren. Ich frage mich, wann wir endlich eine anständige Implementierung bekommen ... –

+0

1377 ist nur der Aufruf der Repository-Methode, die diese Methode enthält. – Seraph812

Antwort

0

Wie produzieren Sie Ihre Kriterien Variable? Wenn dies selbst eine zurückgestellte Abfrage oder etwas anderes ist, klingt es wie der wahrscheinliche Täter. Was passiert, wenn Sie vor Ihrer Abfrage eine var criteriaId = criteria.AddressList.Id; eingeben und criteriaId für Ihre Abfrage anstelle Ihrer Kriterien bereitstellen.AddressList.Id?