2012-06-29 17 views
5

Obtengo una "NotSupportedException" cuando ejecuto esta consulta Linq. "El método especificado no es compatible". ¿Qué método? Incluso con "Count()" comentado, el error es el mismo. Excepción interna nulaNotSupportedException con consulta linq y groupBy

Seguimiento de la pila:

en Hydra.WPF.ViewModels.AddressListViewModel._primaryMemberListWorker_DoWork (Objeto remitente, DoWorkEventArgs e) en M: \ Proyectos \ Hydra \ WPF \ ViewModels \ AddressList \ AddressListViewModel.cs: línea 1377 en System.ComponentModel.BackgroundWorker.WorkerThreadStart (objeto argumento)

la consulta SQL:

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

¿Qué línea es 1377? – walther

+6

La implementación de linq de Hibernate tiene problemas con los operadores básicos. Me pregunto cuándo finalmente obtendremos una implementación decente ... –

+0

1377 es solo la llamada al método de depósito que aloja este método. – Seraph812

Respuesta

0

¿Cómo se produce su criterio variable? Si esto es en sí mismo una consulta diferida o alguna otra cosa, parece el probable culpable. ¿Qué sucede si hace un var criteriaId = criteria.AddressList.Id; antes de su consulta y proporciona los criteriosId para su consulta en lugar de sus criterios.AddressList.Id?

Cuestiones relacionadas