我们有EF 6.1,在执行LINQ to SQL查询时,它将所有.NET datetime字段转换为datetime2(SQL),由于日期比较,在某些情况下该操作失败。有没有一种方法可以强制EF使用datetime而不是datetime2。 DB中的FYI列为日期时间。我已经看到了强制所有日期时间都使用datetime2的答案,但是找不到将datetime保留为datetime的任何内容。 EF将datetime转换为datetime2的任何特殊原因。
为了更清楚一点,在DB列中为Datetime,将C#属性声明为datetime。当EF将LINQ转换为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
答案 0 :(得分:0)
您需要安装Nuget软件包:Microsoft.EntityFrameworkCore.SqlServer。安装后,可以在属性中使用HasColumnType(“ datetime”)。 :)