sql >> Base de Datos >  >> RDS >> Mysql

NHibernate QueryOver y MYSQL

Espero que esto sea vinculante de una manera (solo para leer). En este escenario, podría beneficiarse de Proyecciones. ver más aquí 16.6. Proyecciones

Puede crear algún objeto DTO para su cuadrícula y similar a la documentació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>();

Debería poder hacerlo así (no puedo comprobarlo ahora, pero debería quedar claro)

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>();

Entonces, en este caso, obligará a NHibernate a crear Proyección (solo 1 cláusula SELECT) y devolverá todos los datos necesarios a la vez