Sử dụng FNH, tôi đang cố gắng để lấy loại, sử dụng như sau:LINQ thành thạo NHibernate Chứa() không hoạt động trong QueryOver <> nhưng làm việc trong Query <>
_session.QueryOver<Data.Model.Category>()
.Where(c => tourCreateRequest.Categories.Contains(c.CategoryId))
.List()
.Select(_categoryMapper.CreateCategory)
.ToList();
Nhưng tôi nhận được một lỗi tại các Chứa() phương pháp:
Không nhận dạng được gọi phương thức: System.Collections.Generic.ICollection`1 [[System.Int64, mscorlib, Version = 4.0.0.0, Culture = trung tính, PublicKeyToken = b77a5c561934e089]]: B oolean Contains (Int64)
Tại sao tôi nhận được lỗi đó, có gì sai?
Tôi đã xem qua một số bài đăng và sau đó thay đổi truy vấn của tôi thành (bên dưới) và điều này hoạt động với Truy vấn <>.
_session.Query<Data.Model.Category>()
.Where(c => tourCreateRequest.Categories.Contains(c.CategoryId))
.ToList()
.Select(_categoryMapper.CreateCategory)
.ToList();
Tôi nghĩ QueryOver <> là mới nhất và vĩ đại nhất và nên được sử dụng thay vì truy vấn <>.
Vấn đề với cách tôi đang sử dụng QueryOver <> như được hiển thị ở trên là gì?
Tôi nghĩ bạn cần phải đọc http://stackoverflow.com/questions/5328565/nhibernate3-query-vs-queryover – frictionlesspulley
đầu tiên này nhờ liên kết. Tuy nhiên, làm thế nào tôi có thể thực hiện điều tương tự bằng cách sử dụng .Contains() sử dụng QueryOver <>? – jaxxbo
Tôi thích giải pháp này tốt hơn: http://stackoverflow.com/questions/4739129/linq-to-nhibernate-where-collection-contains-object-with-id –