Tôi mong đợi, rằng đây là một cách ràng buộc (chỉ để đọc). Trong trường hợp này, bạn có thể kiếm được lợi nhuận từ Dự báo. xem thêm tại đây 16.6. Các phép chiếu
Bạn có thể tạo một số Đối tượng DTO cho lưới của mình và tương tự như tài liệu hướng dẫn:
CatSummary summaryDto = null;
IList<CatSummary> catReport =
session.QueryOver<Cat>()
.SelectList(list => list
.SelectGroup(c => c.Name).WithAlias(() => summaryDto.Name)
.SelectAvg(c => c.Age).WithAlias(() => summaryDto.AverageAge))
.TransformUsing(Transformers.AliasToBean<CatSummary>())
.List<CatSummary>();
Bạn sẽ có thể làm điều đó như thế này (Tôi không thể kiểm tra nó ngay bây giờ, nhưng nó sẽ rõ ràng)
LietadloDTO lietadloDTO = null;
dgv.DataSource = session
.QueryOver<Lietadlo>(() => f)
.JoinAlias(() => f.Spolocnostt_Id,() => t)
.JoinAlias(() => f.Typp_Id, ()=> r)
.Where(() => t.Pocetlietadiel > 2)
.And(() => r.Name == "Boeing-747")
.SelectList(list => list
.Select(f => f.Id).WithAlias(() => lietadloDTO.Id)
.Select(t => t.Name).WithAlias(() => lietadloDTO.Name)
...
)
.TransformUsing(Transformers.AliasToBean<LietadloDTO>())
.List<LietadloDTO>()
.ToList<LietadloDTO>();
Vì vậy, trong trường hợp này, bạn sẽ buộc NHibernate tạo Projection (chỉ 1 mệnh đề SELECT) và trả về tất cả dữ liệu cần thiết cùng một lúc