2012-06-29 28 views
5

Tôi nhận được "NotSupportedException" khi chạy truy vấn LINQ này. "Phương thức được chỉ định không được hỗ trợ". Phương pháp gì? Ngay cả với "Count()" đã nhận xét, lỗi cũng giống nhau. Null Inner Exception.NotSupportedException với truy vấn LINQ và nhómBởi

Stack Trace:

tại Hydra.WPF.ViewModels.AddressListViewModel._primaryMemberListWorker_DoWork (Object gửi, DoWorkEventArgs e) trong M: \ Projects \ Hydra \ WPF \ ViewModels \ AddressList \ AddressListViewModel.cs: dòng 1377 tại System.ComponentModel.BackgroundWorker.WorkerThreadStart (Object luận)

Các truy vấn 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

Dòng nào là 1377? – walther

+6

Triển khai LINQ của Hibernate có vấn đề về các toán tử cơ bản. Tôi tự hỏi khi nào cuối cùng chúng ta sẽ có được một sự thực hiện tốt ... –

+0

1377 chỉ là cuộc gọi đến phương thức lưu trữ chứa phương thức này. – Seraph812

Trả lời

0

Làm thế nào để bạn tạo ra tiêu chí của bạn biến? Nếu đây là chính nó là một truy vấn bị trì hoãn hoặc một cái gì đó khác nó có vẻ như thủ phạm có khả năng. Điều gì sẽ xảy ra nếu bạn thực hiện var criteriaId = criteria.AddressList.Id; trước truy vấn của mình và cung cấp tiêu chí cho truy vấn của bạn thay vì tiêu chí của bạn.AddressList.Id?