Я просмотрел многочисленные сообщения об этой ошибке, но решения, которые я видел, либо не применяются, либо не работают в моей ситуации (или я не понимаю, как заставить их работать?) поэтому я неохотно размещаю это в надежде найти ответ.LINQ to Entities: суммирование дочернего значения
Я представляю следующий простой запрос в L2E:
var symbolCover = DataModel.NCoverAnalysisDetail.Where(d => d.IsNew &&
d.NCoverAnalysis.BuildTime > FromNewDate).Sum(c => c.SymbolCoverage);
и выдает следующее исключение:
Актерских к типу значения «Int32» не удался, так как материализованное значение равно нулю , Либо общий параметр типа результата, либо запрос должны использовать тип с нулевым значением.
В таблицах нет нулевых столбцов, и SQL (см. Ниже), отправляемых в базу данных, возвращает 0 (ноль), поэтому я не вижу, в чем проблема.
exec sp_executesql N'SELECT
[GroupBy1].[A1] AS [C1]
FROM (SELECT
SUM([Extent1].[SymbolCoverage]) AS [A1]
FROM [dbo].[NCoverAnalysisDetail] AS [Extent1]
INNER JOIN [dbo].[NCoverAnalysis] AS [Extent2] ON [Extent1].[NCoverAnalysisID] = [Extent2].[ID]
WHERE ([Extent1].[IsNew] = 1) AND ([Extent2].[BuildTime] > @p__linq__0)
) AS [GroupBy1]',N'@p__linq__0 datetime',@p__linq__0='2012-02-17 00:00:00'
выглядит как дубликат http://stackoverflow.com/questions/2076827/linq-error-generic-parameter-or-the-query-must-use-a-nullable-type. Попробуйте использовать int? вместо var для symbolCover? – AlanT