Есть вот такой TSQL
SELECT Data.*
FROM [currrates_data].[dbo].[CashExchangeRates] Data
INNER JOIN (
SELECT
[FinancialInstitutionCountryCode],
[FinancialInstitutionName],
[BaseCurrency],
[QuoteCurrency],
MAX([Timestamp]) AS [Timestamp]
FROM [currrates_data].[dbo].[CashExchangeRates]
GROUP BY
[FinancialInstitutionCountryCode]
[FinancialInstitutionName]
[BaseCurrency]
[QuoteCurrency]) Filter
ON
[Data].[FinancialInstitutionCountryCode] = [Filter].[FinancialInstitutionCountryCode] AND
[Data].[FinancialInstitutionName] = [Filter].[FinancialInstitutionName] AND
[Data].[BaseCurrency] = [Filter].[BaseCurrency] AND
[Data].[QuoteCurrency] = [Filter].[QuoteCurrency] AND
[Data].[Timestamp] = [Filter].[Timestamp]
Как это перевести на nHibernate? Через SubQuery не получится, поскольку у CashExchangeRate имеется composite-id (FinancialInstitutionCountryCode, FinancialInstitutionName, BaseCurrency, QuoteCurrency, Timestamp) который через WHERE IN никак не заработает.
Что удалось найти: nHibernate не поддерживает JOIN на несвязаных сущностях, тоесть JOIN на одной и той же таблице не получится сделать.
Вижу 2 варианта: менять структуру и вносить суррогатный ID (номер записи чтоли), или писать на raw SQL это.