Если в модели объекта нет связи между клиентом и продажами, вы не можете соединить два объекта вместе, используя любые методы запросов в NH2.1, о которых я могу подумать.
Также вы не можете присоединиться к подзапросам несвязанных сущностей, как в вашем примере.
Однако вы можете сделать это в NH2.1, что даст вам аналогичные результаты.
var customers = session.CreateCriteria<Customer>().Future<Customer>() //Get all Customers
var salesTotals = session.CreateCriteria<Sales>()
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("CustomerId"), "CustomerID")
.Add(Projections.Sum("Sales"),"SalesTotal")
)
.SetResultTransformer(
new AliasToBeanResultTransformer(typeof(SalesByCustomerDTO))
).Future<SalesByCustomerDTO>().List()
Это выполнит одну поездку на сервер и выдаст два запроса: один для всех клиентов и один для совокупного объема продаж с customerid.
Затем вы можете объединить два набора результатов в памяти, используя LINQ.