Очаквам, че това е еднопосочно обвързване (само за четене). В този сценарий бихте могли да спечелите от прогнозите. вижте повече тук 16.6. Прогнози
Можете да създадете някакъв DTO обект за вашата мрежа и подобно на документацията:
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>();
Трябва да можете да го направите по този начин (не мога да го проверя в момента, но трябва да е ясно)
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>();
Така че в този случай ще принудите NHibernate да създаде Projection (само 1 клауза SELECT) и да върне всички необходими данни наведнъж