Два вопроса с последующими подробностями:
- Какие еще побочные эффекты возникают, когда я меняю свой ProviderManifestToken на "2005"?
- Разумно ли менять схему в базе данных с
datetime
на datetime2
? Например, если я оставлю свой ProviderManifestToken как «2008», и кто-то позже попытается сгенерировать схему базы данных из модели EDMX, будет ли он использовать datetime2
тип данных для этих столбцов при их создании?
подробности:
VS2010 SP1
.NET 4
EF 4
SQL Server 2008
У меня нет практического опыта работы с Entity Framework, и я неожиданно поддерживаю кодовую базу, которая его использует. Кодовая база хрупкая, в сжатые сроки, и еще не до конца понятна теми, кто остается.
Solution Explorer показывает файл EDMX, который сопоставляется с существующей схемой в нашей базе данных DEV. Я не знаю, какая (модель или база данных) появилась первой.
Операция фиксации завершается с ошибкой:
Преобразование типа данных datetime2 в тип данных datetime
привело к значению вне допустимого диапазона.
Когда я смотрю на типы данных моих столбцов даты / времени в моем экземпляре SQL Server 2008, они все datetime
, а не datetime2
.
Когда я смотрю на XML файла EDMX, я вижу этот атрибут элемента схемы:
ProviderManifestToken = "2008"
Я предполагаю, что где-то в моем .NET-коде есть значение DateTime, значение которого выходит за пределы диапазона datetime
типа данных SQL Server 2008. Из прочитанного я понял, что изменение ProviderManifestToken в EDMX на «2005» не позволит EF пытаться использовать тип datetime2
во время этих коммитов.
Вот моя проблема: я не знаю, что еще об этой кодовой базе или месте EF изменится, если я изменю это с 2008 на 2005, и у меня есть предубеждение против перехода назад с технологией, когда это не является абсолютно необходимым .