У меня есть настройка REST API с OData v4 и Entity Framework (v6.4). Всякий раз, когда я выполняю расширение в API (v1/api/main?$expand=Items
), сгенерированный sql содержит этот случайный GUID. Я почти уверен, что это используется для «идентификации» расширенных элементов, но есть ли способ либо избавиться от него, либо изменить его на параметр?
Это вызывает серьезные проблемы с журналированием sql, а также с оптимизацией плана запроса.
Сгенерированный sql ниже (я опустил выбор, а также изменил имена полей / таблиц) )
SELECT
[Project3].[ID] AS [ID],
[Project3].[C1] AS [C1],
[Project3].[ID2] AS [ID2],
...
FROM ( SELECT
[Limit1].[ID] AS [ID],
[Limit1].[ID2] AS [ID2],
...
CASE WHEN ([Limit2].[ID3] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C5]
FROM (SELECT TOP (21) [Project1].[ID] AS [ID], [Project1].[ID2] AS [ID2], ...
FROM ( SELECT
[Extent1].[ID] AS [ID],
[Extent1].[ID2] AS [ID2],
...
N'538522f0-f041-4fc3-9ce9-5b9e7ba62d4b' AS [C1],
N'Items' AS [C2],
20 AS [C3]
FROM [DBSchema].[vMain] AS [Extent1]
WHERE ([Extent1].[ID] = @p__linq__0) AND ([Extent1].[OtherID] = @p__linq__1)
) AS [Project1]
ORDER BY [Project1].[ID] ASC ) AS [Limit1]
OUTER APPLY (SELECT TOP (@p__linq__2) [Project2].[ID3] AS [ID3], [Project2].[ID] AS [ID], [Project2].[ID2] AS [ID2], ...
FROM ( SELECT
[Extent2].[ID3] AS [ID3],
[Extent2].[ID] AS [ID],
[Extent2].[ID2] AS [ID2],
...
N'538522f0-f041-4fc3-9ce9-5b9e7ba62d4b' AS [C1]
FROM [DBSchema].[vItems] AS [Extent2]
WHERE ([Limit1].[ID] = [Extent2].[ID]) AND ([Limit1].[ID2] = [Extent2].[ID2])
) AS [Project2]
ORDER BY [Project2].[ID3] ASC ) AS [Limit2]
) AS [Project3]
ORDER BY [Project3].[ID] ASC, [Project3].[ID2] ASC, [Project3].[C5] ASC