spry
@spry

Как подруджить nHibernate, composite-id и INNER JOIN/WHERE IN?

Есть вот такой 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 это.
  • Вопрос задан
  • 2314 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы