У меня есть следующий рабочий запрос SQL:
SELECT * FROM truck t
WHERE t.currentlocationdbid IN (SELECT dbid FROM location WHERE name = 'Los Angeles')
OR t.nextdestinationdbid IN (SELECT dbid FROM location WHERE name = 'Chicago' OR name = 'New York');
Я хотел бы написать это в NHibernate.Конечно, с несколькими поездками в БД для каждой сущности это работает, но я бы хотел сделать это за одну поездку.Посмотрел примеры с отдельными запросами, такими как this , this или this , но ни один из них не работал для меня.Попытался сделать это также с псевдонимами и критериями.
Одна из десятков попыток:
var subQuery1 = QueryOver.Of<LocationEntity>().Where(l => l.Name == LocationNameEnum.LA);
var subQuery2 = QueryOver.Of<LocationEntity>().Where(l => l.Name == LocationNameEnum.CHG || l.Name == LocationNameEnum.NY);
var poc = session.QueryOver<TruckEntity>()
.WithSubquery.WhereProperty(t => t.CurrentLocation).In(subQuery1)
.WithSubquery.WhereProperty(t => t.NextDestination).In(subQuery2)
.List<TruckEntity>();
Заранее благодарен за любое предложение.