У нас есть EF 6.1, и он преобразует все поля .NET datetime в datetime2 (SQL) при выполнении запроса LINQ to SQL, который не выполняется в определенных сценариях из-за сравнения дат. Есть ли способ заставить EF использовать datetime вместо datetime2. К сведению, столбец в БД - это дата и время. Я видел ответы, заставляющие все datetime использовать datetime2, но не смог найти ничего, что сохранило бы datetime to datetime. Любая конкретная причина, по которой EF преобразует дату и время в дату и время2.
Просто чтобы было более понятно, что в столбце БД указан Datetime, свойства C # объявлены как datetime. Когда EF преобразует запрос LINQ to SQL, он отправляет конкретное поле datetime как datetime2, а не datetime. Столбцы Edate и Pdate являются datetime, и я передаю условие фильтра со значением datetime, но когда я вижу в профилировщике, оно конвертируется в datetime2.
exec sp_executesql N'SELECT TOP (1)
[Project1].[ID] AS [ID]
FROM ( SELECT
[Extent2].[ID] AS [ID]
FROM [DBO].[TableB] AS [Extent1]
INNER JOIN [DBO].[TableA] AS [Extent2] ON [Extent1].[ID] = [Extent2].[ID]
WHERE ([Extent2].[EDate] <= @p__linq__1) AND ([Extent1].[Pdate] > @p__linq__2)
) AS [Project1]
ORDER BY [Project1].[DateP] DESC',N'@p__linq__1 datetime2(7),@p__linq__2 datetime2(7)',
@p__linq__1='2018-06-24 16:43:34.7830000',@p__linq__2='2018-06-24 16:43:34.7830000'
Спасибо,
Punit