Ошибка структуры объекта: преобразование типа данных datetime2 в данные datetime - PullRequest
2 голосов
/ 20 марта 2011

Я знаю, что есть множество сообщений об этой проблеме, но ни одна из них, похоже, не решает мою проблему.

Вот сценарий:

У меня есть CreateDate DateTime в моей базе данных MS SQL Server Пользователь таблица, которая являетсяне обнуляется и автоматически устанавливается с помощью метода GetDate () в настройке «Значение по умолчанию или привязка».

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

Преобразование типа данных datetime2 в тип данных datetime привело к значению вне допустимого диапазона.

В чем заключается хитрость в том, чтобы EF не беспокоился о столбце CreateDate для обновлений?У меня есть StoreGenerationPattern = Identity, но это не помогает.

Вот свойства EF для моего свойства Entity: http://screencast.com/t/8ndQRn9N

А вот мой метод обновления: http://screencast.com/t/UXIzhkhR

Ответы [ 2 ]

4 голосов
/ 20 марта 2011

Вы пытались установить атрибут StoreGeneratedPattern в 'Computed'. В противном случае попробуйте изменить тип данных столбца на datetime2.

[Проблема возникает из-за того, что .NET DateTime.MinValue равняется 0001-1-1, а Sql Server DateTime охватывает 1753-1-1 - 9999-12-31]

2 голосов
/ 01 марта 2012

Я знаю, что это старый вопрос, но, возможно, это может кому-то помочь:

Проблема может заключаться в ошибке, из-за которой StoreGeneratedPattern в концептуальном разделе (CSDL) файла .edmx выходит изсинхронизировать с StoreGeneratedPattern в разделе «Хранилище» (SSDL).Значение GetDate() по умолчанию никогда не вызывается, потому что - если вы не назначите дату из своего клиентского кода - используется значение по умолчанию DateTime.MinValue.

Хорошая новость в том, что она исправлена.Ищите KB2561001: http://archive.msdn.microsoft.com/KB2561001. Я не знаю, исправлено ли это в следующем выпуске EF 4.3 или вам все еще нужно применить исправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...