Mysql
 sql >> Datenbank >  >> RDS >> Mysql

NHibernate QueryOver und MYSQL

Ich würde erwarten, dass dies eine Einwegbindung ist (nur zum Lesen). In diesem Szenario könnten Sie von Projektionen profitieren. siehe mehr hier 16.6. Projektionen

Sie können einige DTO-Objekte für Ihr Grid und ähnlich wie in der Dokumentation erstellen:

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

Sie sollten es so machen können (ich kann es jetzt nicht überprüfen, aber es sollte klar sein)

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

In diesem Fall zwingen Sie also NHibernate, Projection zu erstellen (nur 1 SELECT-Klausel) und alle benötigten Daten auf einmal zurückzugeben