Tôi cố gắng để chạy truy vấn LINQ dưới đây với nHibernate 3.nHibernate 3 - Left Join tái LINQ giải pháp
var items = from c in session.Query<tbla>()
join t in session.Query<tblb>() on c.Id equals t.SomeId into t1 // use left join on trades.
from t2 in t1.DefaultIfEmpty()
select new {item = c, desc = t2.Description};
Đây là cách chứng khoán để thực hiện một trái tham gia trong LINQ to hiểu biết của tôi. Tuy nhiên nó cho tôi một thông báo ngoại lệ không được hỗ trợ. Làm thế nào tôi có thể đạt được một tham gia trái cơ bản mà không cần phải trở lại HQL? Điều này có vẻ hơi ngớ ngẩn mà một ORM như thịnh hành như nHibernate không thể hỗ trợ một cái gì đó như là người đi bộ như một tham gia trái.
[sửa]
Tôi đã đặt câu trả lời thực sự cho câu hỏi của riêng mình bên dưới.
Tôi bị mất. Các giá trị tương đương cho "trên c.Id bằng t.SomeId thành t1" và "new {item = c, desc = t2.Description}" trong ví dụ này là gì? Bạn có thể mở rộng ví dụ và/hoặc nhận xét không? – mayu
Câu trả lời được chấp nhận là sai. Tại sao bạn không gửi câu trả lời của riêng bạn? Tôi sẽ bầu cho nó. – mayu
Cuộc gọi tốt, tôi đã chuyển bản chỉnh sửa của tôi thành câu trả lời. Phép thuật tham gia xảy ra trong mệnh đề 'SelectList' của biểu thức đó. Hy vọng rằng sẽ giúp. Truy vấn thứ hai không phải là một logic đối sánh chính xác một cách khôn ngoan cho truy vấn đầu tiên, do đó không có táo để so sánh táo ở đó. – James