Я не совсем понимаю это правильно, но я немного растерялся, потому что он вообще не выполняет соединение:
ActualBookingOccupancy abo2Alias = null;
AccommodationUnit auAlias = null;
List<ActualBookingOccupancy> sectorList = (List<ActualBookingOccupancy>)Session.QueryOver<ActualBooking>()
.JoinAlias(x => x.AccommodationUnit, () => auAlias)
.Where(x => (x.AccommodationUnit.AccommodationUnitID != id)
&& (x.YearMonth >= start && x.YearMonth < end)
&& auAlias.Rating == au.Rating)
.SelectList(x => x
.SelectGroup(xx => xx.YearMonth).WithAlias(() => abo2Alias.YearMonth)
.SelectSum(xx => xx.RoomOccupancy).WithAlias(() => abo2Alias.ProviderOccupancy))
.TransformUsing(Transformers.AliasToBean<ActualBookingOccupancy>())
.List<ActualBookingOccupancy>();
Я просто пытаюсь присоединиться ActualBooking
к AccommodationUnit
, но основной запрос с использованием профилировщика SQL показывает, что он даже не пытается выполнить это соединение, а вместо этого использует псевдоним, который не разрешен. Мое отображение выглядит правильным, однако:
CompositeId()
.KeyProperty(x => x.YearMonth)
.KeyProperty(x => x.RoomType)
.KeyReference(x => x.AccommodationUnit, "AccommodationUnitID");
Возможно, это связано с тем, что я использую составной ключ, а на самом деле это может быть ошибка в FluentNHibernate?