Я использую Entity Framework 5, Database First.Entity Framework параметр datetime для null или min
Я делаю то, что я делал много раз раньше, но по какой-то причине он не работает.
Моя таблица определяется как:
CREATE TABLE [dbo].[ActivationQueue](
[ID] [int] IDENTITY(1,1) NOT NULL,
[username] [nvarchar](255) NOT NULL,
[email] [nvarchar](255) NOT NULL,
[ActivationRequested] [datetime] NOT NULL,
[ActivationEmailSent] [datetime] NOT NULL,
[AccountActivated] [datetime] NOT NULL,
[ActivationAttempts] [int] NULL,
[ActivationKey] [uniqueidentifier] NULL,
CONSTRAINT [PK_Activations] ПЕРВИЧНЫЙ КЛЮЧ CLUSTERED
Это код, я использую, чтобы получить конкретную строку:
ActivationQueue accountActivation = DbSet.FirstOrDefault(a => a.username.ToLower() == userName)
При Я использую DbSet.FirstOrDefault()
, чтобы получить первую строку, столбец ActivationEmailSent всегда возвращается SQLDateTime.MinValue()
, хотя он имеет правильное значение. Столбец ActivationRequested всегда возвращает правильное значение.
Я использовал SQL-профилировщик, и когда я запускаю ниже SQL, я получаю правильное значение DateTime
.
exec sp_executesql N'SELECT TOP (1)
[Extent1].[ID] AS [ID],
[Extent1].[username] AS [username],
[Extent1].[email] AS [email],
[Extent1].[ActivationRequested] AS [ActivationRequested],
[Extent1].[ActivationEmailSent] AS [ActivationEmailSent],
[Extent1].[AccountActivated] AS [AccountActivated],
[Extent1].[ActivationAttempts] AS [ActivationAttempts],
[Extent1].[ActivationKey] AS [ActivationKey]
FROM [dbo].[ActivationQueue] AS [Extent1]
WHERE (LOWER([Extent1].[username])) = @p__linq__0',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'someusername'
Дело в том, что получает меня, что отображения для ActivationRequested
и ActivationEmailSent
идентичны, как и определения (я просто использовал updateModel
в EDMX). Но ActivationRequested
возвращает правильное значение, в то время как ActivationEmailSent
возвращает SQLDateTime.Min
(1753-01-01 00:00:00.000
)
Я не знаю, помогает ли это, но когда я поставил колонку, чтобы быть обнуляемым, он только что вернулся нуль.
Где-то в вашем коде это значение не устанавливается. – scartag