2013-03-17 2 views
1

Я использую 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)

Я не знаю, помогает ли это, но когда я поставил колонку, чтобы быть обнуляемым, он только что вернулся нуль.

+0

Где-то в вашем коде это значение не устанавливается. – scartag

ответ

0

Обнаружена проблема для всех, кто может прийти с этим.

В model.store свойства столбца DateTime имел точность атрибут установлен в None тогда как сущность была точности атрибут установлен в .

Изменение атрибута точности до отсутствует для исправления проблемы.

Хотя я все еще сбитый с толку, почему это сработало для одной из колонн в первую очередь, а не для другого, даже если они имели одинаковые сопоставления.

+0

не работал для меня – Dileep

Смежные вопросы