Je m'attendrais à ce qu'il s'agisse d'une liaison à sens unique (juste pour la lecture). Dans ce scénario, vous pourriez profiter des projections. voir plus ici 16.6. Projections
Vous pouvez créer un objet DTO pour votre grille et similaire à la documentation :
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>();
Vous devriez pouvoir le faire comme ceci (je ne peux pas le vérifier maintenant, mais ça devrait être clair)
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>();
Donc, dans ce cas, vous forcerez NHibernate à créer Projection (seulement 1 clause SELECT) et à renvoyer toutes les données nécessaires à la fois