Можете ли вы запустить код и посмотреть на генерируемый им SQL?
Я предполагаю, что это что-то очень похожее на это:
SELECT *
FROM Location
WHERE LocationId IN (SELECT LocationId FROM UserLocation WHERE UserId = @UserId)
Похоже, что он пытается найти все местоположения для данного пользователя на основе его UserId.
Subqueries.PropertyIn выполняет «внутреннее выделение».
SetProjection возвращает подмножество возможных столбцов.
Ограничения используются при построении предложения WHERE.
DetachedCriteria и CreateCriteria используются для построения операторов SELECT.
Список в конце выполняет запрос и возвращает список объектов данного типа.