sql >> Databáze >  >> RDS >> Mysql

NHibernate QueryOver a MYSQL

Očekával bych, že toto je jednosměrná závaznost (jen pro čtení). V tomto scénáři můžete profitovat z projekcí. více zde 16.6. Projekce

Můžete vytvořit nějaký objekt DTO pro vaši mřížku a podobně jako v dokumentaci:

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

Měli byste to udělat takto (momentálně to nemohu zkontrolovat, ale mělo by to být jasné)

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 tomto případě tedy donutíte NHibernate vytvořit projekci (pouze 1 klauzuli SELECT) a vrátit všechna potřebná data najednou




  1. Podpora výkonu v nastavení hybridního cloudu

  2. SQL Server:Jak používat UNION se dvěma dotazy, které OBA mají klauzuli WHERE?

  3. LOAD DATA LOCAL INFILE Problém s MySQL/PHP

  4. Zlepšení výkonu MySQL na dotazu Run-Once s velkou datovou sadou