このコード
int maxTrackId = dataContext.TicketTracks.Max(T => T.TrackId);
SQL
次のコードを生成します。
SELECT MAX([t0].[TrackId]) AS [value]
FROM [dbo].[TicketTracks] AS [t0]
しかし、テーブルが空の場合、null許容値をnull許容でない変数に割り当てることができないという例外が発生しました。
次に、このコードを記述し、SQLプロバイダーに最大値またはnullのいずれかが必要であることを明示的に通知します。
int? maxTrackId = dataContext.TicketTracks.Max(T => (int?)T.TrackId);
そして、null許容でないSQL列で正常に機能し、null
または数値のいずれかを返します。しかし、SQL
生成されたコードはちょっと奇妙です:
SELECT MAX([t1].[value]) AS [value]
FROM (
SELECT [t0].[TrackId] AS [value]
FROM [dbo].[TicketTracks] AS [t0]
) AS [t1]
したがって、特に2つの場合は奇妙に見えSELECT
ます。これを回避する方法はありますか?