Воспроизвел исходную ошибку данной темы.
Валится здесь:
X++:
IQueryable<XppAggregate> source = (from t in entities.TraceLines
join m in entities.MethodNames on t.MethodHash equals (long?)m.MethodHash
where t.UserSessionProcessId >= startSessionId && t.UserSessionProcessId <= endSessionId
group t by new
{
t.MethodHash,
m.Name
} into topXppGroup
orderby topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.InclusiveDurationNano) descending
select new XppAggregate
{
Name = topXppGroup.Key.Name,
Count = topXppGroup.Count(),
InclusiveTotal = (double)topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.InclusiveDurationNano) / 10000.0,
ExclusiveTotal = (double)topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.ExclusiveDurationNano) / 10000.0,
InclusiveRpcTotal = topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.InclusiveRpc),
DatabaseCallsTotal = topXppGroup.Sum((TraceLine x) => x.IsRecursive.Value ? 0 : x.DatabaseCalls)
}).Take(top);
List<XppAggregate> list = source.ToList();
Как SQL оно выглядит так:
X++:
exec sp_executesql N'SELECT TOP (5)
[Project1].[C5] AS [C1],
[Project1].[Name] AS [Name],
[Project1].[C2] AS [C2],
[Project1].[C6] AS [C3],
[Project1].[C7] AS [C4],
[Project1].[C3] AS [C5],
[Project1].[C4] AS [C6]
FROM ( SELECT
[GroupBy1].[A1] AS [C1],
[GroupBy1].[A2] AS [C2],
[GroupBy1].[A5] AS [C3],
[GroupBy1].[A6] AS [C4],
[GroupBy1].[K2] AS [Name],
1 AS [C5],
CAST( [GroupBy1].[A3] AS float) / cast(10000 as float(53)) AS [C6],
CAST( [GroupBy1].[A4] AS float) / cast(10000 as float(53)) AS [C7]
FROM ( SELECT
[Filter1].[K1] AS [K1],
[Filter1].[K2] AS [K2],
SUM([Filter1].[A1]) AS [A1],
COUNT([Filter1].[A2]) AS [A2],
SUM([Filter1].[A3]) AS [A3],
SUM([Filter1].[A4]) AS [A4],
SUM([Filter1].[A5]) AS [A5],
SUM([Filter1].[A6]) AS [A6]
FROM ( SELECT
[Extent1].[MethodHash] AS [K1],
[Extent2].[Name] AS [K2],
CASE WHEN ([Extent1].[IsRecursive] = 1) THEN cast(0 as bigint) ELSE [Extent1].[InclusiveDurationNano] END AS [A1],
1 AS [A2],
CASE WHEN ([Extent1].[IsRecursive] = 1) THEN cast(0 as bigint) ELSE [Extent1].[InclusiveDurationNano] END AS [A3],
CASE WHEN ([Extent1].[IsRecursive] = 1) THEN cast(0 as bigint) ELSE [Extent1].[ExclusiveDurationNano] END AS [A4],
CASE WHEN ([Extent1].[IsRecursive] = 1) THEN 0 ELSE [Extent1].[InclusiveRpc] END AS [A5],
CASE WHEN ([Extent1].[IsRecursive] = 1) THEN 0 ELSE [Extent1].[DatabaseCalls] END AS [A6]
FROM [dbo].[TraceLines] AS [Extent1]
INNER JOIN [dbo].[MethodNames] AS [Extent2] ON [Extent1].[MethodHash] = [Extent2].[MethodHash]
WHERE ([Extent1].[UserSessionProcessId] >= @p__linq__0) AND ([Extent1].[UserSessionProcessId] <= @p__linq__1)
) AS [Filter1]
GROUP BY [K1], [K2]
) AS [GroupBy1]
) AS [Project1]
ORDER BY [Project1].[C1] DESC',N'@p__linq__0 int,@p__linq__1 int',@p__linq__0=26,@p__linq__1=26
Ну и очень хорошо воспроизводится - это проблема данных в БД. Предположу, что причиной является конкретный лог трассировки.