У меня есть простой запрос в LINQ к SQL:Как заставить LINQ to SQL передавать .NET DateTime как datetime2?
var id = 23479824;
var date = Changes.Where(ch => ch.Id == id).First().Date;
var diff = Changes.Where(ch => ch.Id == id).Select(ch => SqlMethods.DateDiffNanosecond(date, ch.Date)).First();
diff
Переменная должна быть равна нулю, однако это не так. Генерируется SQL-имеет следующий вид:
DECLARE @p0 DateTime = '2010-07-14 15:05:49.207'
DECLARE @p1 Int = 44633
SELECT TOP (1) [t1].[value]
FROM (
SELECT DATEDIFF(Nanosecond, @p0, [t0].[Date]) AS [value], [t0].[Id]
FROM [dbo].[Changes] AS [t0]
) AS [t1]
WHERE [t1].[Id] = @p1
GO
Я обнаружил, что это вызвано LINQ к SQL, который проходит .NET DateTime
типа как SQL datetime
. Однако столбец Date
имеет тип SQL datetime2
.
Это ошибка в LINQ to SQL или функция? Как заставить LINQ to SQL передавать дату ввода как datetime2
?
Есть ли какой-нибудь умный способ поиска определенного параметра в динамическом запросе (неизвестно заранее)? Или я должен заменить все 'datetime' на' datetime2'? –